From c767f2eb6307f4bf4c5e058a6cb9c62a9031688c Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 00:08:28 +0200 Subject: [PATCH 01/22] feat: the supervisor goes integer-only, and into the gates it was outside Three changes that turned out to be one: a coding standard needed writing, and writing it found that the component it was mostly about passed through no static analyser at all and ran under no sanitiser. THE SUPERVISOR WAS ANALYSED BY NOTHING. SWR-NFR-25 says code shall pass the project's static analysis configuration. .clang-tidy's HeaderFilterRegex named only firmware/controller, tools/tidy.sh built databases from the controller's two host projects, and tools/tidy-target.sh hardcodes kiln_hal_esp32s3. Tasklist C11 records the same hole for main.cpp and httpd.cpp and never mentioned the supervisor, so the one component whose entire argument is that it can be independently reviewed was the one component clang-tidy had never seen. tidy.sh now drives four databases, 65 translation units. The supervisor's two target-only units need no ARM toolchain: src/main.cpp and board/startup.cpp 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, carrying the same vacuous-pass canary tidy-target.sh has. STM32CubeCLT is needed to build the image, not to parse it. It reported 207 findings, all in the supervisor, and the disposition matters more than the number. 46 were macro-to-enum in the core headers and are fixed: every object-like macro in core/ and protocol/ is now constexpr, SUP_C_TO_Q7 among them, which became a constexpr function. 7 were const-correctness in the suites and are fixed. 3 are narrow false positives carrying a NOLINTNEXTLINE with the reason. The remaining ~150 are one class, memory-mapped register access, confined to board/ and src/, 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/: the safety function is clean under the unmodified root profile, and that is the half the independence claim rests on. THE SUPERVISOR IS INTEGER-ONLY, closing tasklist R10. The internal unit is q7, 1/128 degC in an int32_t, which is the MAX31856's own LSB, so the hot-junction 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; text went from 6736 to 3488 bytes, the soft-float helpers having been 2.7 kB of a 6.7 kB image. Size was the least of it. A safety function depended on a library this project does not build, test or qualify, which under 61508-3 is in scope for the argument and under 60730 Annex H is code in the declared software class; the cheapest way to discharge that is not to link it. And every comparison carried a NaN case, correct and subtle and exactly the kind of reasoning a later reader simplifies away. An int32_t has no NaN, so those cases are unrepresentable rather than handled, which is stronger than a passing test. The same reasoning removed the dt sign guard: a uint32_t interval cannot be negative. Two things were hardened while converting rather than translated. Timers saturate via add_ms, because a latch timer that wrapped would fall back below its threshold and un-arm a condition still present, the one arithmetic failure here that would cost protection instead of causing a nuisance trip. And disagreeing takes its magnitude in unsigned arithmetic, so neither a signed overflow nor negating INT32_MIN is reachable even for inputs the decode cannot produce. Both have tests; the NaN tests they replace are gone. --specs=nano.specs stays and its reason changed. The only remaining C library dependency is memcpy and memset, emitted by the compiler for zero-initialised structs rather than written by anyone. Verified by trying -nostdlib, which now fails on exactly those two and nothing else. Supplying them locally wants its own review, so the comment records the dependency instead of a flag changing. THE SANITISER RUNS WERE REPORTING FINDINGS AND PASSING. SWR-TST-20 only ever said the build shall support the sanitisers and the supervisor's did not, so it gained ENABLE_ASAN and a second ctest step. Adding it exposed that UBSan's default is to print a runtime error and continue, leaving the exit code at zero: ctest reports PASSED for a test that triggered real undefined behaviour, and the controller's asan+ubsan leg had been green on those terms over three findings since it was written. Both builds now pass -fno-sanitize-recover=undefined. Those three findings were one class and not defects: test_faults casting 999 to a fault code, test_safety_current casting 200, test_suplink feeding 200 as a wire trip reason, each deliberately, to prove a value arriving from outside is rejected. That is what firmware/controller/test/.clang-tidy already exempts EnumCastOutOfRange for, so UBSan's enum check is excluded in both CMakeLists with the reason written down, separately from the recovery flag, because "fires on a negative test" and "never fail on anything" are different claims. unsigned-integer-overflow is deliberately off too: add_ms and the disagreement magnitude both rely on unsigned wrap being defined. The gate was shown to fail before being trusted, the way the tidy canary was: reintroducing the signed hi - lo that disagreeing avoids produces "signed integer overflow" from test_trip and fails the sanitised step while the plain step still passes. A gate that prints its findings and goes green is worse than no gate, because it looks like one. docs/coding-standard.md is the document v-model-process.md section 5 has always named as an input to implementation and that did not exist. It separates what 60730-1 Annex H asks of the code, which is diagnostics and explicitly no language subset, from what 13849-1 clause 4.6 and 61508-3 table B.1 ask, which is the subset and is why a coding standard exists at all. It names MISRA C++:2023 as the supervisor's target and records that the supervisor compiles clean at C++17, which is the dialect that standard is written against, so adopting it is a tooling purchase and paperwork rather than a rewrite. Nothing here claims MISRA compliance and section 3 says why the word must not be used. Section 10 lists seven gaps that are not met, including the three this commit does not close: no commercial MISRA checker has run, no tool qualification argument exists for the CRC stamper or the compiler, and worst-case stack is still unbounded at build time though -fstack-usage is set. The TC2 ~FAULT input on PB4 is in here too, which was in the working tree and cannot be separated: it changed pin_low to take its port on the same lines of main.cpp that the q7 conversion touched, and splitting it would mean committing an intermediate state that was never built. Verified: supervisor 4 suites and 81 tests pass plain and under ASan+UBSan, controller 25 suites pass in both, clang-tidy clean over all 65 translation units, MC/DC 100 % against its 80 % floor, and the target image builds warning-free at 3488 bytes. --- .clang-tidy | 10 +- .github/workflows/ci.yml | 46 +- README.md | 1 + docs/coding-standard.md | 358 +++++++++++++++ docs/test-concept.md | 4 +- .../components/kiln_core/src/suplink.cpp | 9 +- firmware/controller/test/host/CMakeLists.txt | 24 +- .../test/host/unit/test_suplink.cpp | 8 +- firmware/supervisor/CMakeLists.txt | 18 +- firmware/supervisor/README.md | 19 +- firmware/supervisor/board/.clang-tidy | 49 ++ firmware/supervisor/board/pins.h | 84 +++- .../supervisor/core/include/sup/max31856.h | 59 +-- .../supervisor/core/include/sup/selfcheck.h | 21 +- firmware/supervisor/core/include/sup/trip.h | 49 +- firmware/supervisor/core/src/max31856.cpp | 15 +- firmware/supervisor/core/src/trip.cpp | 103 +++-- .../supervisor/protocol/include/sup_proto.h | 63 ++- .../supervisor/protocol/src/sup_proto.cpp | 73 +-- firmware/supervisor/src/.clang-tidy | 24 + firmware/supervisor/src/main.cpp | 67 ++- firmware/supervisor/test/.clang-tidy | 25 ++ firmware/supervisor/test/host/CMakeLists.txt | 45 ++ .../supervisor/test/host/test_max31856.cpp | 56 ++- firmware/supervisor/test/host/test_proto.cpp | 65 ++- firmware/supervisor/test/host/test_trip.cpp | 419 ++++++++++-------- tasklist.md | 84 +++- tools/tidy.sh | 134 +++++- 28 files changed, 1520 insertions(+), 412 deletions(-) create mode 100644 docs/coding-standard.md create mode 100644 firmware/supervisor/board/.clang-tidy create mode 100644 firmware/supervisor/src/.clang-tidy create mode 100644 firmware/supervisor/test/.clang-tidy diff --git a/.clang-tidy b/.clang-tidy index e889a5a..c1105fb 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -155,5 +155,13 @@ CheckOptions: misc-const-correctness.AnalyzeParameters: false WarningsAsErrors: '*' -HeaderFilterRegex: 'firmware/controller/(components|host)/.*/include/.*\.h$' + +# The supervisor's headers are in here too, because SWA-22's whole argument is +# that its firmware is independently reviewable, and a header no analyser looks +# at is not that. `board/stm32g031.h` is the one exclusion: it is *generated* +# from ST's CMISIS-SVD by tools/gen-stm32g031-header.py, so a finding in it is a +# finding against the generator, and editing the output is what the file's own +# header tells you not to do. `pins.h` and `cortex_m0plus.h` are hand-written +# and are gated. +HeaderFilterRegex: 'firmware/(controller/(components|host)/.*/include/.*|supervisor/(core|protocol)/include/.*|supervisor/board/(pins|cortex_m0plus))\.h$' FormatStyle: file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d160cb6..0184ba4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,10 +147,21 @@ jobs: run: | cmake -B build-host -S firmware/controller/test/host -DCMAKE_EXPORT_COMPILE_COMMANDS=ON cmake -B build-webhost -S firmware/controller/host/webhost -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - # Covers both databases: the host build and host/webhost, which is its own - # CMake project and went unanalysed until tasklist F1b. The third, the - # ESP-IDF adapter layer, needs the target toolchain and is the job below. + cmake -B build-sup-tidy -S firmware/supervisor/test/host -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + + # Covers four databases: the host build, host/webhost (its own CMake + # project, unanalysed until tasklist F1b), the supervisor's host project, + # and a synthesised one for the supervisor's two target-only units. + # + # The supervisor needs no ARM toolchain here. src/main.cpp and + # board/startup.cpp include only and the project's own headers, + # so tools/tidy.sh analyses them with clang's bare-metal thumbv6m target + # and -ffreestanding; STM32CubeCLT is needed to BUILD the image, not to + # parse it. That script refuses to report those two clean unless it can + # prove it built an AST for both, for the same reason tidy-target.sh does. + # + # The fifth, the ESP-IDF adapter layer, needs the target toolchain and is + # the job below. - name: Analyse run: tools/tidy.sh @@ -294,6 +305,33 @@ jobs: cmake --build build-sup -j"$(nproc)" ctest --test-dir build-sup --output-on-failure + # SWR-TST-20. A second run of the same four suites under ASan and UBSan, + # in its own build directory so the instrumented objects never mix with + # the plain ones. + # + # It is a separate step rather than a matrix leg, which the controller's + # host-tests job uses, because this job also owns the MC/DC measurement + # and that must run exactly once: a matrix would run it twice and publish + # two step summaries for the same numbers. + # + # Why the supervisor needs this at all, having gone without it: its + # arithmetic is now entirely fixed point. A 19-bit field reassembled + # across three register bytes, a sign-extending shift, a magnitude taken + # in unsigned arithmetic and saturating millisecond timers each have an + # undefined-behaviour failure mode that is invisible at -O0 on x86 and + # would be a wrong temperature on the target. Checked rather than + # assumed: reintroducing the signed subtraction that `disagreeing` + # deliberately avoids makes this step fail and leaves the step above + # passing. + # + # ENABLE_ASAN also turns off UBSan's recovery, so a finding aborts instead + # of printing and leaving the exit code at zero. See the CMakeLists. + - name: Unit tests (asan+ubsan) + run: | + cmake -B build-sup-asan -S firmware/supervisor/test/host -DENABLE_ASAN=ON + cmake --build build-sup-asan -j"$(nproc)" + ctest --test-dir build-sup-asan --output-on-failure + - name: MC/DC env: CLANGXX: /usr/bin/clang++-${{ env.LLVM_VERSION }} diff --git a/README.md b/README.md index 7158819..05d6a3f 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ fix can take; closing it as well would make a unit permanently unfixable. | [`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. | +| [`docs/coding-standard.md`](docs/coding-standard.md) | The coding standard: which safety standards actually reach the source code and what each asks for, the language subset and the flags that enforce it, why the supervisor contains no floating point, how a deviation is recorded, and what is not met yet. | | [`docs/simulation.md`](docs/simulation.md) | Running the firmware against a simulated kiln, on the host and under QEMU, including fault injection. | | [`tasklist.md`](tasklist.md) | Outstanding work, by priority. | diff --git a/docs/coding-standard.md b/docs/coding-standard.md new file mode 100644 index 0000000..342d756 --- /dev/null +++ b/docs/coding-standard.md @@ -0,0 +1,358 @@ + + +# Coding standard + +| | | +|---|---| +| **Document** | Coding standard | +| **Project** | Safe Kiln Controller, PID kiln controller | +| **Version** | 0.1 (draft) | +| **Date** | 2026-10-08 | +| **Status** | For review | +| **Derives from** | [`UR-CON-05`](01_user_req.sdoc), [`SWR-NFR-25`](03_software_req.sdoc), [`SWA-20`](04_software_arch.sdoc), [`UR-REG-010`](01_user_req.sdoc), [`UR-REG-011`](01_user_req.sdoc) | +| **License** | GPL-3.0-or-later | + +[`v-model-process.md` §5](v-model-process.md) names "coding guidelines" as an +input to the implementation phase, and until now there was no such document: +`.clang-format` and `.clang-tidy` were the de facto standard, with their +reasoning in comments and nothing stating what the rules were for. This is that +statement. It is also what an assessment under +[`UR-REG-010`](01_user_req.sdoc) or [`UR-REG-011`](01_user_req.sdoc) asks for by +name, and the reason those two standards are the frame for everything below. + +> **Nothing in this repository is MISRA-compliant, and this document does not +> change that.** Section 3 says what the claim actually is and section 10 says +> what it would take to make the stronger one. The distinction matters because +> "MISRA" is the word people reach for when they mean "written carefully", and +> an assessor will ask for the compliance artefacts rather than the adjective. + +## 1. Which standards ask for this, and what they ask for + +Two of the project's regulatory items reach the source code, and they ask for +different things. Confusing them is the easiest way to do the wrong work. + +| Instrument | What it asks of the code | Where it is answered | +|---|---|---| +| **EN IEC 60730-1 Annex H**, with part 2-9 ([`UR-REG-010`](01_user_req.sdoc)) | A declared software class, and the fault and error detection measures that go with it: invariable memory, variable memory, CPU registers, program counter and sequence, clock, I/O. Annex H prescribes **no coding standard and no language subset.** | [`safety-supervisor.md`](safety-supervisor.md) and `core/selfcheck.cpp`. Not this document. | +| **EN ISO 13849-1:2023 cl. 4.6** ([`UR-REG-011`](01_user_req.sdoc)) | For safety-related embedded software at PL c or d: a documented **language subset and coding guideline**, defensive programming, modular design, code review, static analysis, and separation of safety from non-safety functions. PL e defers to IEC 61508-3. | **This document**, plus [`SWA-22`](04_software_arch.sdoc) for the separation. | +| **IEC 61508-3**, the equivalent route [`UR-REG-011`](01_user_req.sdoc) permits | Table B.1: a coding standard is highly recommended from SIL 2 up, with no dynamic objects, no dynamic variables, limited pointers, no recursion and a strongly typed language. §7.4.4 adds offline **tool qualification**. | This document for the subset; section 10 for the tools, which are not qualified. | + +So: 60730 gives the diagnostics, and 13849 or 61508 are why a coding standard +exists at all. Neither names a standard to adopt. They require that one be +adopted, documented, and shown to be followed with deviations recorded. + +Clause and table numbers shift between editions, and `OQ-R3` is open on which +editions apply. The obligations above are stable across the editions this was +written against; the citations will need fixing when `OQ-R3` closes. + +## 2. Scope + +This governs every line of C++ in `firmware/`. It does **not** govern the web +assets in `web/`, the Python in `tools/`, the OpenSCAD in `housing/` or the +fixture firmware in `fixture/`, none of which is in the safety function or in +the shipped image. + +Within `firmware/` there are two components and they are not held to the same +standard, deliberately: + +| | `firmware/supervisor` | `firmware/controller` | +|---|---|---| +| Role | The whole of one safety function ([`SWA-22`](04_software_arch.sdoc)) | Everything else, including four of the five protection layers | +| Language | **C++17** (section 4) | C++20 ([`SWA-20`](04_software_arch.sdoc)) | +| Size | 3.5 kB of image, four core source files | 22 597 lines | +| Target standard | MISRA C++:2023, section 3 | The high-integrity profile, section 3 | +| Floating point | **None** (section 5) | Permitted; the ESP32-S3 has an FPU | + +The supervisor is held tighter because its argument is that it can be read and +verified on its own, and because it is small enough that the tighter rules are +affordable. A rule the controller cannot afford and the supervisor can is +stated for the supervisor rather than being dropped from both. + +## 3. What the standard is, and what it is not + +**Today: a high-integrity C++ profile, enforced by `clang-tidy`.** That is +`SWA-20`'s claim and it is the honest one. The content is +`cppcoreguidelines-*`, `bugprone-*`, `cert-*`, `clang-analyzer-*`, `misc-*`, +`performance-*`, `portability-*` and part of `readability-*`, which is the same +material the removed `hicpp-*` module approximated, reached by its current +names. `WarningsAsErrors` is `'*'`, there is no suppressions baseline, and CI +blocks merge on any finding. + +**Not MISRA, and the word must not be used.** `clang-tidy` implements no MISRA +checks in any release. The `hicpp-*` module that approximated High Integrity +C++ has been removed from LLVM entirely. Cppcheck's free addon is MISRA **C** +2012 only and needs rule texts nobody may redistribute. Genuine MISRA C++:2023 +checking is commercial. `.clang-tidy` says all of this at length and +[`safety.md` §9.3](safety.md#93-obligations-on-anyone-changing-this-design) +makes it an obligation on anyone changing the design. + +**Target for the supervisor: MISRA C++:2023.** It is the current subset, it +absorbed AUTOSAR C++14 and MISRA C++:2008, and it is the thing an assessor +under 13849 or 61508 recognises as the "suitable language subset" those clauses +ask for. The alternatives were considered and are worse: MISRA C:2012 would +mean rewriting in C; CERT C++ is a security standard and not accepted as a +functional-safety subset, though its checks are enabled already; AUTOSAR C++14 +is withdrawn; JSF++ is C++03; HICPP is gone from the tooling. + +Adopting it is a **tooling purchase and a paperwork exercise, not a rewrite.** +Section 10 lists what is outstanding. + +## 4. Language and dialect + +**The supervisor is C++17.** MISRA C++:2023 is written against C++17, so +building the supervisor at C++17 makes the standard applicable as written +rather than as adapted. This costs nothing: no C++20 construct appears anywhere +in `core/`, `protocol/`, `board/` or `src/`, and all four compile clean at +`-std=c++17`. `SWA-20`'s reason for C++20, the 152 designated initialisers that +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 controller stays C++20**, per `SWA-20`. + +Both halves are built at a `-std=gnu++20` floor today. Neither uses a GNU +extension deliberately; `gnu++` rather than `c++` is inherited from ESP-IDF. + +### The subset, as enforced by the compiler + +These are not style preferences. Each removes a language feature whose failure +mode is hard to see in review, and each is a flag so that a violation is a +build error rather than a review finding. `firmware/supervisor/CMakeLists.txt` +is the authority; the controller's build carries the first three. + +| Flag | What it forbids, and why | +|---|---| +| `-Wall -Wextra -Werror` | The baseline. `SWR-NFR-25` requires it. | +| `-Wshadow` | A name shadowing an outer one is how an assignment reaches the wrong variable while reading correctly. | +| `-Wconversion` | An implicit narrowing is the arithmetic error that compiles. On a safety path that is a silently truncated temperature. | +| `-Wdouble-promotion` | Supervisor only, and now mostly moot: there is no floating point left to promote (section 5). Kept so that reintroducing one is loud. | +| `-fno-exceptions` | No hidden control flow and no unwinder. A throw across the trip logic would be a path no test took. | +| `-fno-rtti` | No dynamic type information, and therefore no `dynamic_cast`. | +| `-fno-threadsafe-statics` | No hidden guard variable and no hidden lock on a function-local static. | +| `-fno-use-cxa-atexit` | No registration of destructors to run at an exit that never comes. | +| `-fno-common` | A duplicate tentative definition is a link error rather than a silent merge. | +| `-fstack-usage` | Emits per-function stack usage. Not yet consumed; section 10. | + +### Rules the flags cannot express + +- **No heap.** Zero `malloc`, `free`, `new` or `delete` across the firmware, by + design and not by accident: `cppcoreguidelines-no-malloc` and + `-owning-memory` are enabled, and there is no allocator on either target. +- **No variable-length arrays**, and no recursion in the supervisor. The + controller's JSON parser recurses by design and boundedly, which is why + `misc-no-recursion` is off project-wide; the supervisor contains no recursion + and no function pointer at all, which is what makes a static stack bound + possible once section 10 is done. +- **No object-like macros in the supervisor's `core/` or `protocol/`.** They + are `constexpr`, so the compiler has a type to check. The two vendor headers + `board/pins.h` and `board/cortex_m0plus.h` are the exception, stated in + `board/.clang-tidy`: a pin number must read exactly as ST's datasheet spells + it. +- **Positive logic for every safety predicate.** A field named for the healthy + state, so that a zero-initialised struct withholds heat rather than granting + it. `chamber_valid` and `diag_ok` are both this, and `sup_input_t` documents + why at each one. This is the single most load-bearing convention in the + supervisor and it has a test that does nothing else. +- **Layer purity.** The deciding code takes no hardware, RTOS or ESP-IDF + header, so every rule is host-testable (`SWR-TST-01`, `SWA-01`, `SWA-14`). + +## 5. Floating point, and the C library + +This section is referenced from `sup_proto.h`, `trip.h` and +`protocol/src/sup_proto.cpp`, because it is the reasoning behind a convention +those files would otherwise just assert. + +**The supervisor contains no floating point.** Not discouraged: absent, and +checked by the fact that `nm` on the linked image finds no `__aeabi_f*` symbol. + +The Cortex-M0+ has no FPU. Every float compare, add and multiply was a call +into a libgcc soft-float helper, and `lroundf` came from newlib-nano, which is +why the link needed `--specs=nano.specs` rather than `-nostdlib`. Three things +followed from that, and only the first is the one people notice: + +1. **It was 2.7 kB of the image**, out of 6.7 kB. Removing it took the + supervisor from 6 736 to 3 488 bytes of text. +2. **A safety function depended on a library the project does not build, does + not test and does not qualify.** Under 61508-3 that library is in scope for + the argument; under 60730 Annex H it is code in the declared software class. + The cheapest way to discharge that is not to link it. +3. **Every comparison had a NaN case.** `effective_c`, `over_temp`, + `disagreeing` and `enc_temp` each carried a comment explaining that a + comparison against a NaN is false whichever way it is written, and one test + existed purely to pin that. That is correct, subtle, and exactly the kind of + reasoning that gets "simplified" by the next reader. An `int32_t` has no NaN, + so those cases are **unrepresentable rather than handled**, which is a + stronger property than a passing test. + +The same three apply to the controller with the first two reversed: the +ESP32-S3 has hardware floating point and the libraries are already linked, so +float there costs nothing and is permitted. + +**Rules:** + +- No floating-point type in `firmware/supervisor`, at all. Reintroducing one + needs an entry in this section saying why, not just a passing build. +- Conversions between a sensor's unit and a human unit happen at **one** named, + tested function, never inline at a call site. In the supervisor that is + `sup_q7_to_dc`. +- An integer conversion function must be **total**: defined for every value of + its argument type, including values no sensor can produce, because the struct + it reads is public and the next thing to fill it may not be the decode. + `sup_q7_to_dc` clamps before it multiplies for this reason, and + `disagreeing` takes its magnitude in unsigned arithmetic so that neither a + signed overflow nor negating `INT32_MIN` is reachable. +- An accumulating safety timer **saturates, never wraps**. A latch timer that + wrapped would fall back below its threshold and un-arm a condition that is + still present, which is the one arithmetic failure in the trip logic that + would cost protection rather than cause a nuisance trip. `add_ms` is four + lines and has a test. + +### The fixed-point convention + +| Unit | Where | Why | +|---|---|---| +| **q7**, 1/128 degC, `int32_t` | Inside the supervisor: the decode, the trip logic, the thresholds | It is the MAX31856's own LSB, so the decode is a shift and nothing else. There is no scaling step in which a reading can be rounded or truncated. | +| **decidegrees**, 0.1 degC, `int16_t` | The link frame and `sup_report_t` | What the wire already carried, and what the log record uses, so the two never need converting between each other. | +| **degrees**, `float` | The controller, from its port boundary inwards | An FPU, and a port contract already expressed in degrees. | + +The two integer units differ by a factor of 10/128, which is 5/64 exactly, so +the conversion is a multiply and a shift with no division. The unit is named +once, in `sup_proto.h`, because a unit named in two places eventually means two +things. + +## 6. Formatting + +`.clang-format`, and it is not negotiable per file: `clang-tidy --fix` consults +it, so a mismatch silently reformats every region a fix touches. Four-space +indent, 100 columns, Stroustrup braces, pointer bound to the name. `SortIncludes` +is off because the include order is sometimes load-bearing. + +Comments are expected to say **why**, not what. The tree is written this way +throughout and it is the single thing that makes an independent review of the +supervisor possible in an afternoon. A comment restating the code is noise; a +comment recording the failure the line prevents is the review. + +## 7. How a deviation is recorded + +There is no suppressions baseline and there will not be one: a baseline records +violations as accepted and then stops being read. There are exactly three ways +to deviate, in order of preference, and all three are visible in a diff. + +1. **Fix it.** The default, and what happened to 46 macro constants in the + supervisor's core headers when the gate first reached them. +2. **`NOLINTNEXTLINE(check)` with the reason in the comment above it**, for a + false positive on one line. Used for the two linker-symbol subtractions in + `main.cpp`, where the analyser cannot see the linker script that places the + two symbols adjacently, and for the `extern` array declaration in + `selfcheck.h` that `bugprone-dynamic-static-initializers` reports despite + having no initialiser. +3. **A directory-scoped `.clang-tidy` with `InheritParentConfig: true`**, for a + finding class that is inherent to a boundary. Each disabled check carries a + written reason in that file. There are four such files and each states what + it does *not* relax: + +| File | Relaxes | Because | +|---|---|---| +| `firmware/supervisor/board/.clang-tidy` | int-to-pointer casts, C-style and reinterpret casts, macro-to-enum, internal linkage | A memory-mapped peripheral is an integer address turned into a pointer. The addresses are generated from ST's CMSIS-SVD, which is a stronger control than a cast style. | +| `firmware/supervisor/src/.clang-tidy` | the same five | `main.cpp` touches the same registers. Deliberately identical, so the two cannot drift. | +| `firmware/supervisor/test/.clang-tidy` | two checks, both on the `KILN_TEST()` macro expansion | The diagnostic lands on the expansion site, so no `NOLINT` can reach it. | +| `firmware/controller/test/.clang-tidy`, `.../kiln_hal_esp32s3/.clang-tidy` | negative-test and ESP-IDF-macro findings | Pre-existing; their own files carry the reasoning. | + +Nothing is relaxed for `firmware/supervisor/core`, +`firmware/supervisor/protocol`, `firmware/controller/components` or +`firmware/controller/main`. The supervisor's safety function is gated by the +unmodified root profile and is clean under it. + +A new entry in any of these files is a change to this document. + +## 8. What is enforced, and by what + +Every row is CI-blocking unless it says otherwise. + +| | Gate | Covers | +|---|---|---| +| Compiler | `-Wall -Wextra -Werror` and the subset flags of section 4 | Every target | +| `clang-tidy` | `tools/tidy.sh`, four compile databases, 65 translation units | The controller host build, `host/webhost`, the supervisor's core, protocol and suites, and the supervisor's two target-only units against a synthesised bare-metal database | +| `clang-tidy` | `tools/tidy-target.sh` | `kiln_hal_esp32s3`, which needs the ESP-IDF headers | +| Unit tests | `ctest`, plain and under ASan and UBSan | The controller: 25 suites | +| Unit tests | `ctest`, plain and under ASan and UBSan | The supervisor: 4 suites, 81 tests | +| Coverage | `gcovr`, 90 % line floor | `kiln_core` | +| MC/DC | `tools/mcdc.sh`, 80 % floor, measured at 100 % | The supervisor's trip logic, decode, self-checks and wire format | +| Layer purity | `tools/layercheck` | **Does not exist.** `safety.md` §9.3 cites it. Section 10 | +| Traceability | `tools/trace` | Not yet written, tasklist C6 | + +Two of those deserve naming because they are easy to get wrong. + +**A clean report must be provable.** `tools/tidy.sh` and +`tools/tidy-target.sh` both refuse to report clean unless they can show +`clang-tidy` built an AST for every unit they claim to have analysed. The +failure mode being guarded is not a red build, it is a green one that parsed +nothing: a cross-target database whose headers do not resolve produces no +findings and looks like success. Any future script that analyses code it did +not build needs the same canary. + +The sanitiser runs had the same defect and it went unnoticed for longer. +**UBSan's default is to print a runtime error and continue**, which leaves the +exit code at zero, so `ctest` reports PASSED for a test that triggered real +undefined behaviour. The controller's ASan job had been green on those terms +over three findings for as long as it had existed. Both builds now pass +`-fno-sanitize-recover=undefined`, so the first finding aborts. + +`enum` is the one UBSan check excluded, with its reason in both CMakeLists: +three controller suites cast an out-of-range value to an enum **on purpose**, +to prove the code rejects a value that arrived from outside, which is the same +deliberate behaviour `firmware/controller/test/.clang-tidy` already exempts +`EnumCastOutOfRange` for. Excluding a check that fires on a negative test is +not the same as recovering from every finding, which is why the two were +separated rather than solved with one flag. + +A gate that prints its findings and goes green is worse than no gate, because +it looks like one. Any new gate in this project has to be shown to fail: the +sanitiser step was verified by reintroducing the signed subtraction that +`disagreeing` deliberately avoids, confirming that UBSan reports it, that the +step fails, and that the plain step passes. + +**MC/DC rather than branch coverage, for the permit decision.** The permit is a +five-term conjunction. One test with everything true and one with everything +false gives 100 % line and branch coverage of it and proves close to nothing; +MC/DC requires each term to be shown to change the outcome on its own. That is +the level 61508-3 expects at SIL 3 and is above what 13849 PL d asks for, and +it is the one place in the project where a missed condition means heat that +should have stopped. + +## 9. Obligations on a change + +In addition to [`safety.md` §9.3](safety.md#93-obligations-on-anyone-changing-this-design), +which stands: + +| | Obligation | +|---|---| +| A change to a safety rule needs a host test that fails before it and passes after (`SWR-TST-25`) | Existing | +| A new fault code needs an explicit clearability decision; it does not inherit one | Existing | +| No floating point may enter `firmware/supervisor` without an entry in section 5 | New | +| A new `.clang-tidy` exemption, or a new `NOLINT`, needs its reason in the file and a row in section 7 | New | +| The supervisor's firmware must stay small enough to read in one sitting. If it grows a scheduler, a parser or a configuration model, the independence claim starts to rot ([`safety-supervisor.md` §10](safety-supervisor.md)) | Existing | + +## 10. What is not met yet + +Stated plainly, because a coding standard that lists only what is already done +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. | +| 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. | | +| 6 | **`tools/layercheck` does not exist**, though `safety.md` §9.3 cites it as enforcing the host-testability rule. | Write it, or stop citing it. | +| 7 | **`main.cpp` and `httpd.cpp` on the controller side are analysed by nothing**, tasklist C11, 102 findings. Unrelated to the supervisor and tracked there. | Compute the target-only unit set as "in the target build, not in the host build", then the ordinary passes. | + +Items 2 and 4 are each an afternoon. Item 1 is a purchase. Item 3 is the one +that needs a decision rather than work. diff --git a/docs/test-concept.md b/docs/test-concept.md index 86f564f..f0eac23 100644 --- a/docs/test-concept.md +++ b/docs/test-concept.md @@ -53,8 +53,8 @@ rule that is correct and also reads past an array is not correct. specific.** Its permit decision is a five-term conjunction: ```c -permit = selftest_ok && !tripped && chamber_valid - && fault_bits == 0 && chamber_c <= SUP_OVERTEMP_C; +permit = selftest_ok && !tripped && any_valid(in) && !disagreeing(in) + && fault_bits == 0 && effective_q7(in) <= SUP_OVERTEMP; ``` One test with every term true and one with every term false gives 100 % line diff --git a/firmware/controller/components/kiln_core/src/suplink.cpp b/firmware/controller/components/kiln_core/src/suplink.cpp index ead97f1..b49b49c 100644 --- a/firmware/controller/components/kiln_core/src/suplink.cpp +++ b/firmware/controller/components/kiln_core/src/suplink.cpp @@ -53,8 +53,13 @@ kiln_err_t sl_read(void *ctx, kiln_tc_reading_t *out) return KILN_ERR_IO; } - out->temp_c = s->last.chamber_c; - out->cj_c = s->last.cj_c; + /* Tenths of a degree on the wire and in sup_report_t, degrees in a float + * here. The conversion lives on this side of the link deliberately: the + * supervisor is a Cortex-M0+ with no FPU, where a float is a libgcc helper + * call inside a safety function, and this is an ESP32 with hardware + * floating point and a port contract already expressed in degrees. */ + out->temp_c = (float)s->last.chamber_dc / (float)SUP_DC_PER_C; + out->cj_c = (float)s->last.cj_dc / (float)SUP_DC_PER_C; /* The supervisor's fault bits are KILN_TC_FAULT_* already: it reads the * same part and reports its status register unmodified. */ out->fault_bits = s->last.fault_bits; diff --git a/firmware/controller/test/host/CMakeLists.txt b/firmware/controller/test/host/CMakeLists.txt index 7bb9d07..662c2d2 100644 --- a/firmware/controller/test/host/CMakeLists.txt +++ b/firmware/controller/test/host/CMakeLists.txt @@ -25,9 +25,29 @@ if(ENABLE_COVERAGE) add_link_options(--coverage) endif() +# -fno-sanitize-recover=undefined, added with the supervisor's equivalent block +# and for the reason found there: UBSan's default is to print a runtime error +# and continue, so the exit code stays zero and ctest reports PASSED for a test +# that triggered real undefined behaviour. This job was green on those terms +# for as long as it has existed, over three real findings. ASan aborts by +# default; UBSan had to be told. +# +# `enum` is excluded from UBSan, and it is the one check that had to go. +# Loading an out-of-range value through an enum-typed lvalue is undefined, and +# three suites do it DELIBERATELY: test_faults casts 999 to a fault code, +# test_safety_current casts 200, and test_suplink feeds 200 as a wire trip +# reason, each to prove the code rejects a value that arrived from outside. +# That is the same deliberate behaviour firmware/controller/test/.clang-tidy +# already exempts `EnumCastOutOfRange` for, and the negative tests are the +# point rather than a defect to fix. +# +# Everything else UBSan checks stays on and now aborts. if(ENABLE_ASAN) - add_compile_options(-fsanitize=address,undefined -fno-omit-frame-pointer -g) - add_link_options(-fsanitize=address,undefined) + add_compile_options(-fsanitize=address,undefined -fno-sanitize=enum + -fno-sanitize-recover=undefined + -fno-omit-frame-pointer -g) + add_link_options(-fsanitize=address,undefined -fno-sanitize=enum + -fno-sanitize-recover=undefined) endif() set(KILN_FW_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..) diff --git a/firmware/controller/test/host/unit/test_suplink.cpp b/firmware/controller/test/host/unit/test_suplink.cpp index 083623b..92ba09f 100644 --- a/firmware/controller/test/host/unit/test_suplink.cpp +++ b/firmware/controller/test/host/unit/test_suplink.cpp @@ -7,6 +7,7 @@ * every way the link can lie or fall silent has to end up somewhere the safety * rules already understand. */ +#include #include #include "kiln_check.h" @@ -15,13 +16,16 @@ namespace { +/* `c` stays in degrees, because every caller below is asserting about degrees + * at the port. The report struct is tenths, as the wire is, so the scaling to + * the supervisor's own encoding happens here rather than in each test. */ sup_report_t rep(uint8_t seq, float c) { sup_report_t r = {}; r.version = SUP_VERSION; r.seq = seq; - r.chamber_c = c; - r.cj_c = 25.0f; + r.chamber_dc = (int16_t)lroundf(c * (float)SUP_DC_PER_C); + r.cj_dc = (int16_t)(25 * SUP_DC_PER_C); r.fault_bits = 0u; r.flags = (uint8_t)(SUP_FLAG_PERMIT | SUP_FLAG_TC_VALID | SUP_FLAG_SELFTEST_OK); r.trip_reason = SUP_TRIP_NONE; diff --git a/firmware/supervisor/CMakeLists.txt b/firmware/supervisor/CMakeLists.txt index 3ebc6e3..fb9caa3 100644 --- a/firmware/supervisor/CMakeLists.txt +++ b/firmware/supervisor/CMakeLists.txt @@ -44,11 +44,19 @@ target_compile_options(supervisor.elf PRIVATE target_link_options(supervisor.elf PRIVATE -mcpu=cortex-m0plus -mthumb -T${CMAKE_CURRENT_LIST_DIR}/board/stm32g031k8.ld - # -nostartfiles, not -nostdlib: the Cortex-M0+ has no FPU, so every float - # compare and multiply is a libgcc soft-float helper call, and -nostdlib - # takes libgcc away along with the C library. newlib-nano supplies - # lroundf. Tasklist R10 proposes removing the floats entirely, which would - # let this go back to -nostdlib. + # -nostartfiles, not -nostdlib. The reason used to be soft float: with the + # temperatures in a float, every compare and multiply on this FPU-less core + # was a libgcc helper call and lroundf came from newlib-nano. Tasklist R10 + # is done and none of that is linked any more -- `nm | grep aeabi` finds + # nothing, and the image lost 3 248 bytes, nearly half of it. + # + # What still needs a C library is `memcpy` and `memset`, which the compiler + # emits for the zero-initialised structs in startup.cpp, trip.cpp and + # main.cpp rather than anything anyone wrote. Going to -nostdlib therefore + # means supplying those two functions here, and a hand-written memset + # inside a safety image is a decision rather than a flag change: it wants + # its own tests and its own review. Left as it is, deliberately, and this + # comment is the record of what the remaining dependency actually is. -nostartfiles --specs=nano.specs -Wl,--gc-sections,--print-memory-usage -Wl,-Map=supervisor.map) diff --git a/firmware/supervisor/README.md b/firmware/supervisor/README.md index 7516592..d09d692 100644 --- a/firmware/supervisor/README.md +++ b/firmware/supervisor/README.md @@ -19,7 +19,7 @@ The design, the failure analysis and the open questions are in |---|---| | Part | STM32G031K8T6 | | Core | Cortex-M0+ at 16 MHz from HSI16, no crystal | -| Memory | 64 KB flash (3.5 KB used), 8 KB RAM | +| Memory | 64 KB flash (3.4 KB used), 8 KB RAM | | Package | LQFP32, 0.8 mm pitch | | Uses | SPI1, USART2, IWDG, 8 GPIO | @@ -79,7 +79,7 @@ Why this one: probed, which matters for a part whose whole argument is that it can be verified independently. `SYS-HW-19` already requires top-side test points for the same reason. -- **64 KB of flash against a firmware that currently uses 3.5 KB.** The +- **64 KB of flash against a firmware that currently uses 3.4 KB.** The headroom is not for features. It is for self-tests, and for the fact that a part running at 5 % of its flash will still build in ten years. - Cheap, long-lived and widely stocked, which for a safety part matters more @@ -138,8 +138,19 @@ it is anybody's recollection. ## What is done, and what is not **Done and tested:** the trip logic, the wire format, the MAX31856 register -decode and the self-diagnostics: 68 host tests over four suites, with MC/DC at -100 % over all of it against an 80 % floor. +decode and the self-diagnostics: 81 host tests over four suites, with MC/DC at +100 % over all of it against an 80 % floor. `clang-tidy` reaches this component +too, as of the tidy.sh widening: core, protocol and the suites from the host +compile database, and `src/main.cpp` and `board/startup.cpp` against a +synthesised bare-metal one, so no file here is outside the project's gates. The +standard it is held to is [`docs/coding-standard.md`](../docs/coding-standard.md). + +**No floating point.** The temperatures are fixed point throughout: 1/128 degC +inside, the MAX31856's own LSB, and tenths of a degree on the wire. On a +Cortex-M0+ a float compare is a libgcc soft-float call, so the previous version +linked 2.7 kB of helpers and newlib's `lroundf` into a safety function, and +every comparison needed a NaN case. The image is 3 488 bytes of text now against +6 736 before. See [`docs/coding-standard.md` §5](../docs/coding-standard.md). One coverage gap is worth naming rather than leaving to be found. The two failure returns inside the RAM pattern test are unreachable from a host test, diff --git a/firmware/supervisor/board/.clang-tidy b/firmware/supervisor/board/.clang-tidy new file mode 100644 index 0000000..487d193 --- /dev/null +++ b/firmware/supervisor/board/.clang-tidy @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# The STM32G031 register layer, held to the root profile except for the checks +# that forbid writing a register layer at all. Same arrangement, and the same +# reasoning, as firmware/controller/components/kiln_hal_esp32s3/.clang-tidy: +# findings that are inherent to the hardware boundary are exempted THERE and +# nowhere else. +# +# What this does NOT relax is the point of it. firmware/supervisor/core and +# firmware/supervisor/protocol -- the trip logic, the front-end decode, the +# self-diagnostics and the wire format, which is the whole safety function -- +# are gated by the unmodified root profile and are clean under it with no +# exemption of any kind. So is firmware/supervisor/src beyond this same set. +# +# --------------------------------------------------------------------------- +# WHAT IS SWITCHED OFF, AND WHY +# --------------------------------------------------------------------------- +# no-int-to-ptr ............ A memory-mapped peripheral IS an integer address +# pro-type-cstyle-cast ..... turned into a pointer. 0x40021000 is where RCC +# pro-type-reinterpret-cast is, and there is no way to reach it that these +# three checks accept: they are asking the board +# layer not to be a board layer. Every one of the +# addresses is generated into board/stm32g031.h +# from ST's own CMSIS-SVD, which is the control +# that actually matters here and is stronger than +# a cast style -- no address in that file is +# anybody's recollection. +# +# macro-to-enum ............ pins.h and cortex_m0plus.h are pin numbers, +# alternate-function numbers and core register +# offsets, each traceable to a line of ST's +# datasheet or ARM's architecture manual. The +# core headers were converted to constexpr and are +# gated by this check; these two are the +# vendor-data boundary, where a name must read +# exactly as the document spells it. +# +# use-internal-linkage ..... main() is the entry point. It cannot be static +# and it cannot move into an anonymous namespace, +# which is the same false positive the root +# profile's note about main() records. +InheritParentConfig: true +Checks: > + -performance-no-int-to-ptr, + -cppcoreguidelines-pro-type-cstyle-cast, + -cppcoreguidelines-pro-type-reinterpret-cast, + -cppcoreguidelines-macro-to-enum, + -misc-use-internal-linkage diff --git a/firmware/supervisor/board/pins.h b/firmware/supervisor/board/pins.h index ee0e31e..94214bc 100644 --- a/firmware/supervisor/board/pins.h +++ b/firmware/supervisor/board/pins.h @@ -51,6 +51,7 @@ * PA6 13 SPI1 MISO AF0 * PA7 14 SPI1 MOSI AF0 * PA8 18 coil permit output, low = coil open + * PB4 28 TC2 ~FAULT input, pull-up * PB5 29 TC2 ~CS output, idle high * PB6 30 SPI2 MISO AF4 <- note the AF * PB7 31 SPI2 MOSI AF1 @@ -61,7 +62,8 @@ * * PA5/PA6/PA7 are adjacent and all AF0, which puts the first SPI bus on three * neighbouring pins next to its chip select on PA4. PB6/PB7/PB8 do the same - * for the second, next to its chip select on PB5. + * for the second, next to its chip select on PB5 and its fault input on PB4, + * so each channel is one contiguous run: PA3 to PA7, and PB4 to PB8. * * THE SPI2 ALTERNATE FUNCTIONS ARE NOT ALL THE SAME NUMBER. MISO is AF4 while * SCK and MOSI are AF1, which is unlike SPI1 where all three are AF0. Taken @@ -76,7 +78,7 @@ * range that property 2 below refuses to depend on. Port B is what is left, * and it is adjacent and contiguous. * - * Free for later: PA15, PB0 to PB4, PB9, PC6, PC14, PC15. */ + * Free for later: PA15, PB0 to PB3, PB9, PC6, PC14, PC15. */ #define SUP_PIN_CLEAR 0u /* PA0, pos 7 */ #define SUP_PIN_PERMIT_SENSE 1u /* PA1, pos 8 */ @@ -88,7 +90,14 @@ #define SUP_PIN_SPI_MOSI 7u /* PA7, pos 14 */ #define SUP_PIN_PERMIT 8u /* PA8, pos 18 */ -/* --- port B: the second thermocouple's bus (SWR-SAF-37) ----------------- */ +/* --- port B: the second thermocouple's bus (SWR-SAF-37) ----------------- + * + * PB4 is a plain GPIO on this package with no competing function, which is why + * the fault input went there rather than onto PC14/PC15: those are the OSC32 + * pins, and nothing is using them only because the supervisor runs from the LSI. + * Putting a safety input on them would foreclose ever fitting an LSE crystal, + * which is the obvious upgrade for the IWDG window check's timing accuracy. */ +#define SUP_PIN_TC2_FAULT 4u /* PB4, pos 28 */ #define SUP_PIN_TC2_CS 5u /* PB5, pos 29 */ #define SUP_PIN_SPI2_MISO 6u /* PB6, pos 30 */ #define SUP_PIN_SPI2_MOSI 7u /* PB7, pos 31 */ @@ -146,4 +155,73 @@ * agreeing half the time. */ #define SUP_PERMIT_SENSE_ACTIVE_HIGH 1 +/* --- why the second couple has a ~FAULT pin too ------------------------- + * + * The status register carries the same fault bits over SPI, so this pin adds no + * information the cycle does not already read. What it adds is INDEPENDENCE: + * the status register arrives over the same bus as the data it qualifies, so a + * bus failure makes the fault bits unreadable at exactly the moment they matter. + * The all-0xFF/all-0x00 burst check does catch a dead bus and reports it as a + * comms fault, so the condition is not missed, but it is caught by one channel + * inferring that another has gone quiet rather than by an independent + * indication. + * + * Having gone to the trouble of two front ends on two buses for SWR-SAF-37, + * leaving the fault indication dependent on one of those buses would be + * inconsistent. The pin costs one GPIO, adjacent to the bus it belongs to. + * + * Both parts need MASK = 0x00 before the pin means anything, and both get it: + * tc_init writes it first, for whichever front end it is handed. */ + +/* --- the pin map, checked at compile time -------------------------------- + * + * Added when port B reached five pins, because a collision there is otherwise + * silent: two names for the same bit compile, link and run, and the symptom is + * one peripheral configuring another's pin somewhere in the middle of + * board_gpio_init. Nothing downstream complains. + * + * Sum-equals-OR is the whole trick. Both fold the same (1u << pin) terms, but + * 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. */ +#define SUP_BIT(p) (1u << (p)) + +/* Written out rather than folded by a variadic macro: the preprocessor does not + * rescan a list-valued macro into separate arguments, so the clever version + * does not compile, and the version that does would need an apply-indirection + * layer to read correctly. Thirteen terms twice is worth not having that. */ +#define SUP_PORTA_SUM \ + (SUP_BIT(SUP_PIN_CLEAR) + SUP_BIT(SUP_PIN_PERMIT_SENSE) + \ + SUP_BIT(SUP_PIN_UART_TX) + SUP_BIT(SUP_PIN_TC_FAULT) + \ + SUP_BIT(SUP_PIN_TC_CS) + SUP_BIT(SUP_PIN_SPI_SCK) + \ + SUP_BIT(SUP_PIN_SPI_MISO) + SUP_BIT(SUP_PIN_SPI_MOSI) + \ + SUP_BIT(SUP_PIN_PERMIT)) + +#define SUP_PORTA_OR \ + (SUP_BIT(SUP_PIN_CLEAR) | SUP_BIT(SUP_PIN_PERMIT_SENSE) | \ + SUP_BIT(SUP_PIN_UART_TX) | SUP_BIT(SUP_PIN_TC_FAULT) | \ + SUP_BIT(SUP_PIN_TC_CS) | SUP_BIT(SUP_PIN_SPI_SCK) | \ + SUP_BIT(SUP_PIN_SPI_MISO) | SUP_BIT(SUP_PIN_SPI_MOSI) | \ + SUP_BIT(SUP_PIN_PERMIT)) + +#define SUP_PORTB_SUM \ + (SUP_BIT(SUP_PIN_TC2_FAULT) + SUP_BIT(SUP_PIN_TC2_CS) + \ + SUP_BIT(SUP_PIN_SPI2_MISO) + SUP_BIT(SUP_PIN_SPI2_MOSI) + \ + SUP_BIT(SUP_PIN_SPI2_SCK)) + +#define SUP_PORTB_OR \ + (SUP_BIT(SUP_PIN_TC2_FAULT) | SUP_BIT(SUP_PIN_TC2_CS) | \ + SUP_BIT(SUP_PIN_SPI2_MISO) | SUP_BIT(SUP_PIN_SPI2_MOSI) | \ + SUP_BIT(SUP_PIN_SPI2_SCK)) + +#ifdef __cplusplus +static_assert(SUP_PORTA_SUM == SUP_PORTA_OR, "two port A pins share a bit"); +static_assert(SUP_PORTB_SUM == SUP_PORTB_OR, "two port B pins share a bit"); + +/* Property 2 of the header comment, as a check rather than a paragraph: nothing + * may land on PA9..PA12, whose bonding and SYSCFG remap this map refuses to + * depend on. PA13/PA14 are SWD and the same mask covers them. */ +static_assert((SUP_PORTA_OR & 0x7E00u) == 0u, "a port A pin landed on PA9..PA14"); +#endif + #endif /* SUP_PINS_H */ diff --git a/firmware/supervisor/core/include/sup/max31856.h b/firmware/supervisor/core/include/sup/max31856.h index 8994765..fec9798 100644 --- a/firmware/supervisor/core/include/sup/max31856.h +++ b/firmware/supervisor/core/include/sup/max31856.h @@ -31,12 +31,12 @@ #include "sup_proto.h" /* SUP_TC_FAULT_* */ /* --- registers (datasheet table 2) --------------------------------------- */ -#define SUP_TC_REG_CR0 0x00u -#define SUP_TC_REG_CR1 0x01u -#define SUP_TC_REG_MASK 0x02u -#define SUP_TC_REG_CJTH 0x0Au /* the burst read starts here */ -#define SUP_TC_REG_SR 0x0Fu /* ... and ends here */ -#define SUP_TC_REG_WRITE 0x80u /* address | 0x80 selects a write */ +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 */ /* CJTH, CJTL, LTCBH, LTCBM, LTCBL, SR: six registers in one transaction. * @@ -44,7 +44,7 @@ * 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. */ -#define SUP_TC_BURST_BYTES 6u +constexpr unsigned SUP_TC_BURST_BYTES = 6u; /* --- the values written at init (datasheet tables 3 to 5) ---------------- */ @@ -53,20 +53,20 @@ * 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. */ -#define SUP_TC_CR0_CMODE_AUTO 0x80u -#define SUP_TC_CR0_OCFAULT_1 0x10u /* open-circuit detect, < 5 kohm */ -#define SUP_TC_CR0_FILTER_50 0x01u /* 0 = 60 Hz, 1 = 50 Hz (SWR-ACQ-06) */ -#define SUP_TC_CR0_VALUE \ - (SUP_TC_CR0_CMODE_AUTO | SUP_TC_CR0_OCFAULT_1 | SUP_TC_CR0_FILTER_50) +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) */ +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. * * 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. */ -#define SUP_TC_CR1_AVG_4 0x20u -#define SUP_TC_CR1_TYPE_K 0x03u -#define SUP_TC_CR1_VALUE (SUP_TC_CR1_AVG_4 | SUP_TC_CR1_TYPE_K) +constexpr uint8_t SUP_TC_CR1_AVG_4 = 0x20u; +constexpr uint8_t SUP_TC_CR1_TYPE_K = 0x03u; +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. * @@ -74,24 +74,29 @@ * 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. */ -#define SUP_TC_MASK_VALUE 0x00u +constexpr uint8_t SUP_TC_MASK_VALUE = 0x00u; /* --- status register bits (datasheet table 6) ---------------------------- */ -#define SUP_TC_SR_CJ_RANGE 0x80u -#define SUP_TC_SR_TC_RANGE 0x40u -#define SUP_TC_SR_CJ_HIGH 0x20u -#define SUP_TC_SR_CJ_LOW 0x10u -#define SUP_TC_SR_TC_HIGH 0x08u -#define SUP_TC_SR_TC_LOW 0x04u -#define SUP_TC_SR_OVUV 0x02u -#define SUP_TC_SR_OPEN 0x01u +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; typedef struct { - float chamber_c; /* linearised hot junction, degC */ - float cj_c; /* cold junction, degC */ + /* 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_c at 0, which is never read by a caller that checks + * 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. */ bool valid; } sup_tc_sample_t; diff --git a/firmware/supervisor/core/include/sup/selfcheck.h b/firmware/supervisor/core/include/sup/selfcheck.h index 20ecfd1..5470779 100644 --- a/firmware/supervisor/core/include/sup/selfcheck.h +++ b/firmware/supervisor/core/include/sup/selfcheck.h @@ -32,11 +32,11 @@ * with the reference manual, so every check below is phrased as an invariant * that holds whatever the encoding turns out to be. */ -#define SUP_RCC_CR_HSIRDY (1u << 10) -#define SUP_RCC_CR_PLLON (1u << 24) -#define SUP_RCC_CFGR_SW_Msk (7u << 0) -#define SUP_RCC_CFGR_SWS_Pos 3u -#define SUP_RCC_CFGR_SWS_Msk (7u << SUP_RCC_CFGR_SWS_Pos) +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; /* True when the clock tree is the one the firmware was written against. * @@ -80,7 +80,7 @@ uint32_t sup_crc32(const void *data, size_t len); * It is 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. */ -#define SUP_CRC_UNPROGRAMMED 0xFFFFFFFFu +constexpr uint32_t SUP_CRC_UNPROGRAMMED = 0xFFFFFFFFu; bool sup_flash_ok(const void *data, size_t len, uint32_t expected); @@ -96,7 +96,12 @@ 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. */ -#define SUP_RAM_PATTERN_COUNT 5u +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. + * 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. @@ -141,7 +146,7 @@ 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. */ -#define SUP_STACK_GUARD_PATTERN 0xA5C3A5C3u +constexpr uint32_t SUP_STACK_GUARD_PATTERN = 0xA5C3A5C3u; /* True when every word of the guard still holds the pattern. */ bool sup_stack_guard_ok(const volatile uint32_t *guard, size_t words); diff --git a/firmware/supervisor/core/include/sup/trip.h b/firmware/supervisor/core/include/sup/trip.h index 0fe9d87..5835e8a 100644 --- a/firmware/supervisor/core/include/sup/trip.h +++ b/firmware/supervisor/core/include/sup/trip.h @@ -35,21 +35,32 @@ * * --- the hard-coded thresholds ------------------------------------------ * - * SUP_OVERTEMP_C must agree with KILN_SUPERVISOR_TRIP_C on the ESP32 side, and + * Every temperature here is q7, 1/128 degC, and every interval is whole + * milliseconds. There is no floating point anywhere in this component, and + * that is a property to preserve rather than an accident of how it was + * written: this processor has no FPU, so a float comparison is a call into a + * libgcc helper, and the backstop should not depend on a library the project + * does not build or test. docs/coding-standard.md section 5 has the argument. + * + * Thresholds are written as whole degrees through sup_c_to_q7 so they stay + * readable as the numbers the safety concept states, and the multiply is the + * compiler's. + * + * SUP_OVERTEMP must agree with KILN_SUPERVISOR_TRIP_C on the ESP32 side, and * 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. */ -#define SUP_OVERTEMP_C 1350.0f +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. */ -#define SUP_FAULT_GRACE_S 1.0f +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. */ -#define SUP_CLEAR_HOLD_S 0.5f +constexpr uint32_t SUP_CLEAR_HOLD_MS = 500u; /* SWR-SAF-37: how far the two chamber couples may disagree, and for how long. * @@ -69,8 +80,8 @@ * 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. */ -#define SUP_DISAGREE_C 50.0f -#define SUP_DISAGREE_S 10.0f +constexpr int32_t SUP_DISAGREE = sup_c_to_q7(50); +constexpr uint32_t SUP_DISAGREE_MS = 10000u; /* SWR-SAF-38: how long after withdrawing the permit the coil may still read as * energised before it counts as stuck. @@ -78,16 +89,16 @@ * 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. */ -#define SUP_PERMIT_SETTLE_S 2.0f +constexpr uint32_t SUP_PERMIT_SETTLE_MS = 2000u; typedef struct { - float chamber_c; /* couple 1, linearised, degC */ + 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. */ - float chamber2_c; + 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 */ @@ -119,7 +130,7 @@ typedef struct { bool tripped; /* latched, needs a local clear */ sup_trip_reason_t reason; /* why, latched with the trip */ bool selftest_ok; - float fault_s; /* how long the fault has persisted */ + 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 @@ -140,20 +151,28 @@ typedef struct { * (`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. */ bool clear_armed; - float clear_s; + 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. */ - float disagree_s; - float permit_stuck_s; + uint32_t disagree_ms; + 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. */ void sup_init(sup_t *s, bool selftest_ok); -/* One cycle. dt_s is the elapsed time since the previous call. */ -void sup_step(sup_t *s, const sup_input_t *in, float dt_s); +/* One cycle. dt_ms is the elapsed time since the previous call, in whole + * milliseconds. + * + * 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. */ +void sup_step(sup_t *s, const sup_input_t *in, uint32_t dt_ms); /* Clears a latched trip. * diff --git a/firmware/supervisor/core/src/max31856.cpp b/firmware/supervisor/core/src/max31856.cpp index eb75266..f077664 100644 --- a/firmware/supervisor/core/src/max31856.cpp +++ b/firmware/supervisor/core/src/max31856.cpp @@ -65,7 +65,13 @@ void sup_tc_decode(const uint8_t *regs, sup_tc_sample_t *out) * the two's-complement reinterpretation the datasheet describes. */ const uint16_t cj_bits = (uint16_t)(((uint32_t)regs[0] << 8u) | (uint32_t)regs[1]); const int16_t cj_raw = (int16_t)cj_bits; - out->cj_c = (float)(cj_raw >> 2) / 64.0f; + /* >> 2 drops the two unused low bits and leaves 2^-6 degC per LSB; * 2 + * carries that into the q7 the rest of the supervisor speaks, exactly, + * because the two units differ by a single power of two. Written as a + * multiply rather than a shift so it reads as a change of unit and not as + * bit twiddling, and because shifting a signed value left is the operation + * worth not acquiring a habit of. */ + out->cj_q7 = (int32_t)(cj_raw >> 2) * 2; /* Linearised hot junction: 19 bits, signed, 2^-7 degC per LSB, left-aligned * in 32 across three registers. @@ -80,7 +86,10 @@ void sup_tc_decode(const uint8_t *regs, sup_tc_sample_t *out) ((uint32_t)regs[3] << 16u) | ((uint32_t)regs[4] << 8u); const int32_t tc_raw = (int32_t)tc_bits; - out->chamber_c = (float)(tc_raw >> 13) / 128.0f; + /* And then nothing: the 19-bit value is already 2^-7 degC per LSB, which is + * q7, so the shift back down is the entire decode. This is the saving the + * unit was chosen for. */ + out->chamber_q7 = tc_raw >> 13; out->fault_bits = sup_tc_faults(regs[5]); @@ -91,7 +100,7 @@ void sup_tc_decode(const uint8_t *regs, sup_tc_sample_t *out) * * There is deliberately no range check of our own on top of the part's. * The MAX31856 asserts TC_RANGE outside type K's -200..1372 degC, which is - * above SUP_OVERTEMP_C, so a genuine runaway crosses the 1350 degC + * above SUP_OVERTEMP, so a genuine runaway crosses the 1350 degC * backstop, and latches OVERTEMP, many cycles before the part would call * the reading out of range. Adding a second range gate here would only * create a window where a real over-temperature was reported as a sensor diff --git a/firmware/supervisor/core/src/trip.cpp b/firmware/supervisor/core/src/trip.cpp index 7a1bc9e..a6501ec 100644 --- a/firmware/supervisor/core/src/trip.cpp +++ b/firmware/supervisor/core/src/trip.cpp @@ -20,26 +20,40 @@ bool any_valid(const sup_input_t *in) return in->chamber_valid || in->chamber2_valid; } -float effective_c(const sup_input_t *in) +int32_t effective_q7(const sup_input_t *in) { if (in->chamber_valid && in->chamber2_valid) { - /* Written so a NaN in either cannot win: the comparison is false for a - * NaN whichever way round it is, so the other reading is taken. */ - return (in->chamber2_c > in->chamber_c) ? in->chamber2_c : in->chamber_c; + return (in->chamber2_q7 > in->chamber_q7) ? in->chamber2_q7 : in->chamber_q7; } if (in->chamber2_valid) { - return in->chamber2_c; + return in->chamber2_q7; } - return in->chamber_c; + return in->chamber_q7; } -/* True only for a finite reading strictly above the backstop. Written so a - * NaN answers false here and is caught by the validity path instead: a - * comparison against a NaN is false whichever way it is written, so the - * absence of a usable reading must be its own trip and not a silent pass. */ +/* Milliseconds, saturating. A latch timer that wrapped would walk back below + * its threshold and un-arm a condition that is still present, which is the one + * arithmetic failure in this file that would cost protection rather than cause + * a nuisance trip. Saturation cannot: once a timer is at the top it stays + * there, and every threshold here is far below it. */ +uint32_t add_ms(uint32_t acc, uint32_t dt) +{ + const uint32_t sum = acc + dt; + return (sum < acc) ? UINT32_MAX : sum; +} + +/* True only for a usable reading strictly above the backstop. + * + * The validity term is still first and still load-bearing: the absence of a + * reading must be its own trip, not a silent pass, and chamber_q7 is zero when + * nothing has been read, which would otherwise look like a comfortable 0 degC. + * What has gone is the reason the float version gave for the ordering, that a + * comparison against a NaN is false whichever way it is written. An int32_t + * has no NaN, so the comparison is total and the ordering is now about the + * zero-initialised snapshot alone. */ bool over_temp(const sup_input_t *in) { - return any_valid(in) && (effective_c(in) > SUP_OVERTEMP_C); + return any_valid(in) && (effective_q7(in) > SUP_OVERTEMP); } /* True when both couples are usable and differ by more than the band. False @@ -50,11 +64,25 @@ bool disagreeing(const sup_input_t *in) if (!in->chamber_valid || !in->chamber2_valid) { return false; } - const float d = in->chamber_c - in->chamber2_c; - const float mag = (d < 0.0f) ? -d : d; - /* `>` and not `>=`, and written so a NaN answers false: a NaN reading is a - * validity problem, not a disagreement, and must not be reported as one. */ - return mag > SUP_DISAGREE_C; + /* The magnitude of the difference, computed so that it is defined for + * every pair of int32_t and not only for the 19-bit values the decode can + * produce. + * + * Subtracting signed and negating the result would be the obvious way and + * is wrong twice over: the subtraction overflows for a widely separated + * pair, and negating INT32_MIN is undefined on its own. Both are + * unreachable through sup_tc_decode, which is exactly what makes them the + * kind of assumption that survives until the day something else fills this + * struct. Taken high minus low in uint32_t the result is exact for any + * pair, because a difference of two int32_t always fits in a uint32_t, and + * unsigned arithmetic has no overflow to be undefined about. */ + const int32_t a = in->chamber_q7; + const int32_t b = in->chamber2_q7; + const int32_t hi = (a > b) ? a : b; + const int32_t lo = (a > b) ? b : a; + const uint32_t mag = (uint32_t)hi - (uint32_t)lo; + /* `>` and not `>=`: the band is the largest difference still accepted. */ + return mag > (uint32_t)SUP_DISAGREE; } void latch(sup_t *s, sup_trip_reason_t why) @@ -106,14 +134,15 @@ void sup_init(sup_t *s, bool selftest_ok) } } -void sup_step(sup_t *s, const sup_input_t *in, float dt_s) +void sup_step(sup_t *s, const sup_input_t *in, uint32_t dt_ms) { if ((s == nullptr) || (in == nullptr)) { return; } - if (!(dt_s >= 0.0f)) { /* also false for NaN */ - dt_s = 0.0f; - } + /* No clamp on dt_ms, and that is not an omission. The float version + * rejected a negative or NaN interval here; an unsigned integer can be + * neither, and add_ms saturates, so there is no value of dt_ms this + * function has to defend against. */ /* --- latching conditions -------------------------------------------- */ @@ -146,12 +175,12 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) const bool unusable = (in->fault_bits != 0u) || !any_valid(in); if (unusable) { - s->fault_s += dt_s; + s->fault_ms = add_ms(s->fault_ms, dt_ms); /* A reported fault latches whether or not a reading ever arrived: the * front end is telling us something is wrong. Staleness only latches * once a reading has been seen, so a front end that is still bringing * itself up withholds heat without demanding an acknowledgement. */ - if (s->fault_s >= SUP_FAULT_GRACE_S) { + if (s->fault_ms >= SUP_FAULT_GRACE_MS) { if (in->fault_bits != 0u) { latch(s, SUP_TRIP_TC_FAULT); } else if (s->seen_valid) { @@ -159,7 +188,7 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) } } } else { - s->fault_s = 0.0f; + s->fault_ms = 0u; } /* --- SWR-SAF-37: the two couples disagree --------------------------- @@ -168,12 +197,12 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) * be one bad conversion away. Heat is withheld from the first cycle either * way, because permit is conjunctive below; the window delays the latch. */ if (disagreeing(in)) { - s->disagree_s += dt_s; - if (s->disagree_s >= SUP_DISAGREE_S) { + s->disagree_ms = add_ms(s->disagree_ms, dt_ms); + if (s->disagree_ms >= SUP_DISAGREE_MS) { latch(s, SUP_TRIP_TC_DISAGREE); } } else { - s->disagree_s = 0.0f; + s->disagree_ms = 0u; } /* --- SWR-SAF-38: the permit was withdrawn and the coil stayed on ------ @@ -189,12 +218,12 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) * that is slow to drop gets the whole window, and one that never drops * latches. */ if (!s->permit && in->permit_sense) { - s->permit_stuck_s += dt_s; - if (s->permit_stuck_s >= SUP_PERMIT_SETTLE_S) { + s->permit_stuck_ms = add_ms(s->permit_stuck_ms, dt_ms); + if (s->permit_stuck_ms >= SUP_PERMIT_SETTLE_MS) { latch_escalate(s, SUP_TRIP_PERMIT_STUCK); } } else { - s->permit_stuck_s = 0.0f; + s->permit_stuck_ms = 0u; } /* --- the clear button ------------------------------------------------ @@ -204,13 +233,13 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) * before it counts, and clearing disarms it until it is released again. */ if (!in->clear_pressed) { s->clear_armed = true; - s->clear_s = 0.0f; + s->clear_ms = 0u; } else if (s->clear_armed) { - s->clear_s += dt_s; - if (s->clear_s >= SUP_CLEAR_HOLD_S) { + s->clear_ms = add_ms(s->clear_ms, dt_ms); + if (s->clear_ms >= SUP_CLEAR_HOLD_MS) { sup_clear(s); s->clear_armed = false; - s->clear_s = 0.0f; + s->clear_ms = 0u; } } @@ -225,7 +254,7 @@ void sup_step(sup_t *s, const sup_input_t *in, float dt_s) && any_valid(in) && !disagreeing(in) && (in->fault_bits == 0u) - && (effective_c(in) <= SUP_OVERTEMP_C); + && (effective_q7(in) <= SUP_OVERTEMP); } void sup_clear(sup_t *s) @@ -235,9 +264,9 @@ void sup_clear(sup_t *s) } s->tripped = false; s->reason = SUP_TRIP_NONE; - s->fault_s = 0.0f; - s->disagree_s = 0.0f; - s->permit_stuck_s = 0.0f; + s->fault_ms = 0u; + s->disagree_ms = 0u; + s->permit_stuck_ms = 0u; /* permit stays false until the next sup_step re-establishes every term. * The arming state is deliberately not touched: sup_step owns it, and a * caller clearing the latch directly must not re-arm the button. */ diff --git a/firmware/supervisor/protocol/include/sup_proto.h b/firmware/supervisor/protocol/include/sup_proto.h index 7ca81b0..c8b0f8d 100644 --- a/firmware/supervisor/protocol/include/sup_proto.h +++ b/firmware/supervisor/protocol/include/sup_proto.h @@ -53,7 +53,43 @@ 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. */ -constexpr float SUP_TEMP_SCALE = 10.0f; +constexpr int32_t SUP_DC_PER_C = 10; + +/* --- the supervisor's internal temperature unit --------------------------- + * + * 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. + * + * 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. + * + * 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. See + * docs/coding-standard.md section 5. */ +constexpr int32_t SUP_Q7_PER_C = 128; + +/* Degrees to q7, for a threshold written as a whole number of degrees. + * + * 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. */ +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. */ @@ -102,16 +138,37 @@ constexpr uint32_t SUP_FLAG_SELFTEST_OK = 1u << 3u; * ESP32 should say so rather than let a degraded state look like a healthy one. */ constexpr uint32_t SUP_FLAG_TC2_VALID = 1u << 4u; +/* Tenths of a degree, as on the wire, rather than degrees in a float. + * + * 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. */ typedef struct { uint8_t version; uint8_t seq; - float chamber_c; - float cj_c; + int16_t chamber_dc; + int16_t cj_dc; uint16_t fault_bits; uint8_t flags; sup_trip_reason_t trip_reason; } 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. + * + * 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. + * + * The scaling needs no division: 10/128 is 5/64 exactly, so it is a multiply by + * five and a shift of six. */ +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 diff --git a/firmware/supervisor/protocol/src/sup_proto.cpp b/firmware/supervisor/protocol/src/sup_proto.cpp index 247ec24..947ef72 100644 --- a/firmware/supervisor/protocol/src/sup_proto.cpp +++ b/firmware/supervisor/protocol/src/sup_proto.cpp @@ -1,37 +1,28 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later */ -#include -#include - #include "sup_proto.h" +/* No and no : with the temperatures integer there is nothing + * left in this file that a C library supplies. That is not tidiness, it is the + * point -- see docs/coding-standard.md section 5 on why a safety function + * should not depend on a library it did not build. */ + namespace { -/* Tenths of a degree, saturating, and NaN-safe: a non-finite reading must not - * reach the cast, which is undefined for it. +/* The largest q7 that still fits int16_t tenths, and the saturation values. * - * The NaN test comes first and on its own. Folding it into the range check - * relies on a NaN failing every comparison, which is true and is exactly the - * kind of cleverness that gets simplified away by someone who does not know - * why it was written. */ -constexpr float ENC_LIMIT_C = 3276.7f; -constexpr int16_t ENC_SAT_HI = 32767; -constexpr int16_t ENC_SAT_LO = -32767; - -int16_t enc_temp(float c) -{ - if (isnan(c)) { - return 0; /* a defined value; not a hot kiln */ - } - if (c > ENC_LIMIT_C) { - return ENC_SAT_HI; - } - if (c < -ENC_LIMIT_C) { - return ENC_SAT_LO; - } - return static_cast(lroundf(c * SUP_TEMP_SCALE)); -} + * 3276.7 degC is the top of the encoded range; above it the reading saturates + * rather than wrapping, because a wrapped temperature is a plausible wrong + * number and a saturated one is obviously an extreme. Nothing a type K couple + * and this front end can produce comes close: the clamp exists so that the + * function is defined for every int32_t, including a value no sensor path can + * generate, and so that the multiply below cannot overflow. + * + * 419417 is 3276.7 * 128, truncated. */ +constexpr int32_t ENC_LIMIT_Q7 = 419417; +constexpr int16_t ENC_SAT_HI = 32767; +constexpr int16_t ENC_SAT_LO = -32767; void put_u16(uint8_t *p, uint16_t v) { @@ -48,6 +39,28 @@ uint16_t get_u16(const uint8_t *p) } // namespace +int16_t sup_q7_to_dc(int32_t q7) +{ + /* Clamped before the multiply, which is what keeps the multiply in range: + * five times the limit is 2 097 085, well inside int32_t, and five times an + * unclamped int32_t would not be. */ + if (q7 > ENC_LIMIT_Q7) { + return ENC_SAT_HI; + } + if (q7 < -ENC_LIMIT_Q7) { + return ENC_SAT_LO; + } + + /* 10/128 == 5/64. Rounded away from zero at the half, symmetrically, by + * adding half a divisor to the magnitude: C's division truncates towards + * zero, so the two signs have to be written out rather than sharing one + * expression. Dividing a negative numerator and expecting a shift to do + * the right thing is the mistake this avoids. */ + const int32_t num = q7 * 5; + const int32_t dc = (num >= 0) ? ((num + 32) / 64) : -(((-num) + 32) / 64); + return (int16_t)dc; +} + uint16_t sup_crc16(const uint8_t *data, size_t len) { if (data == nullptr) { @@ -74,8 +87,8 @@ size_t sup_encode(const sup_report_t *r, uint8_t *out, size_t cap) out[0] = (uint8_t)SUP_SOF; out[1] = (uint8_t)SUP_VERSION; out[2] = r->seq; - put_u16(&out[3], (uint16_t)enc_temp(r->chamber_c)); - put_u16(&out[5], (uint16_t)enc_temp(r->cj_c)); + put_u16(&out[3], (uint16_t)r->chamber_dc); + put_u16(&out[5], (uint16_t)r->cj_dc); put_u16(&out[7], r->fault_bits); out[9] = r->flags; out[10] = (uint8_t)r->trip_reason; @@ -105,8 +118,8 @@ size_t sup_decode(const uint8_t *buf, size_t len, sup_report_t *out, size_t *ski } out->version = f[1]; out->seq = f[2]; - out->chamber_c = (float)(int16_t)get_u16(&f[3]) / SUP_TEMP_SCALE; - out->cj_c = (float)(int16_t)get_u16(&f[5]) / SUP_TEMP_SCALE; + out->chamber_dc = (int16_t)get_u16(&f[3]); + out->cj_dc = (int16_t)get_u16(&f[5]); out->fault_bits = get_u16(&f[7]); out->flags = f[9]; out->trip_reason = (sup_trip_reason_t)f[10]; diff --git a/firmware/supervisor/src/.clang-tidy b/firmware/supervisor/src/.clang-tidy new file mode 100644 index 0000000..b83719b --- /dev/null +++ b/firmware/supervisor/src/.clang-tidy @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# main.cpp is the composition root: bring-up of SPI, USART, SysTick and the +# IWDG, then the 10 Hz loop. It touches the same registers board/ does and +# includes the same two vendor headers, so it needs the same five exemptions +# and no others. +# +# The list is kept identical to firmware/supervisor/board/.clang-tidy ON +# PURPOSE, and that file carries the reasoning for each entry. Two files +# rather than one because the alternative is a single .clang-tidy at +# firmware/supervisor/, which would relax core/ and protocol/ as well -- and +# those being gated by the unmodified root profile is the whole point. +# +# Anything else main.cpp trips is fixed in main.cpp, or suppressed on the line +# with its reason, not here. There are two such lines, both subtracting a pair +# of linker symbols that bound one region. +InheritParentConfig: true +Checks: > + -performance-no-int-to-ptr, + -cppcoreguidelines-pro-type-cstyle-cast, + -cppcoreguidelines-pro-type-reinterpret-cast, + -cppcoreguidelines-macro-to-enum, + -misc-use-internal-linkage diff --git a/firmware/supervisor/src/main.cpp b/firmware/supervisor/src/main.cpp index 637194c..7afce8f 100644 --- a/firmware/supervisor/src/main.cpp +++ b/firmware/supervisor/src/main.cpp @@ -73,9 +73,15 @@ constexpr uint32_t SUP_SYSCLK_HZ = 16000000u; constexpr uint32_t SUP_UART_BAUD = 115200u; /* 10 Hz, matching the report rate the link is specified at and the cycle the - * ESP32's own supervisor task runs. */ -constexpr float CYCLE_S = 0.1f; + * ESP32's own supervisor task runs. + * + * The period is handed to sup_step in milliseconds rather than seconds in a + * float, so the two constants below are the same number twice and a + * static_assert says so: a cycle whose timing and whose reported interval + * disagreed would make every latch timer wrong by that ratio, silently. */ constexpr uint32_t CYCLE_HZ = 10u; +constexpr uint32_t CYCLE_MS = 100u; +static_assert(CYCLE_MS * CYCLE_HZ == 1000u, "CYCLE_MS must be the period of CYCLE_HZ"); /* SysTick reload for one cycle. The counter is a down-counter that reloads on * reaching zero, so the period is RVR + 1 ticks: the reload holds one less than @@ -220,6 +226,8 @@ void board_gpio_init() pin_mode(PORT_B, SUP_PIN_TC2_CS, 1u, 0u); pin_set(PORT_B, SUP_PIN_TC2_CS, true); /* ~CS idle high */ + pin_mode(PORT_B, SUP_PIN_TC2_FAULT, 0u, 1u); /* input, pull-up */ + pin_af(PORT_B, SUP_PIN_SPI2_SCK, SUP_AF_SPI2_SCK); pin_af(PORT_B, SUP_PIN_SPI2_MISO, SUP_AF_SPI2_MISO); pin_af(PORT_B, SUP_PIN_SPI2_MOSI, SUP_AF_SPI2_MOSI); @@ -363,7 +371,7 @@ void board_watchdog_init() * A SYSTEM CLOCK RUNNING FAST. The loop comes round early, the counter has * not fallen far enough, and the feed resets. Previously undetected, and it * matters because every trip timer is derived from the system clock: a fast - * clock shortens SUP_CLEAR_HOLD_S, which is the one of them whose shortening + * clock shortens SUP_CLEAR_HOLD_MS, which is the one of them whose shortening * is not in the safe direction. * * A STOPPED LSI. The counter never leaves IWDG_RELOAD, which is above the @@ -443,6 +451,11 @@ bool ram_startup_ok() size_t stack_guard_words() { + /* The two symbols bound ONE region, placed adjacently by the linker + * script, so the difference is that region's size. The analyser cannot + * see the linker script and so cannot know they are related, which is the + * limit of what it can be told here. + * NOLINTNEXTLINE(clang-analyzer-security.PointerSub) */ return static_cast(_sup_stack_guard_end - _sup_stack_guard_start); } @@ -454,6 +467,8 @@ bool stack_ok() /* Program memory integrity, checked once before anything is permitted. */ bool flash_ok() { + /* One region again, bounded by two linker symbols; see stack_guard_words. + * NOLINTNEXTLINE(clang-analyzer-security.PointerSub) */ const size_t len = static_cast(_sup_crc_region_end - _sup_crc_region_start); /* Read through a volatile pointer: the compiler can see the placeholder * initialiser and would otherwise be entitled to fold the comparison and @@ -483,7 +498,11 @@ void wait_for_cycle_end() } } -bool pin_low(unsigned pin) { return !pin_is_high(PORT_A, pin); } +/* Takes its port rather than assuming A, now that one of the three inputs read + * through it is on B. A second pin_low_b() alongside it would be two copies of a + * one-line negation differing in one identifier, which is the shape of mistake + * the tc_dev comment below is about. */ +bool pin_low(const gpio_port &g, unsigned pin) { return !pin_is_high(g, pin); } /* SWR-SAF-38: the coil drive node as the supervisor sees it. */ bool permit_sensed() @@ -592,8 +611,8 @@ uint8_t tc_read_reg(const tc_dev &d, uint8_t reg) } struct tc_reading { - float chamber_c; - float cj_c; + int32_t chamber_q7; /* 1/128 degC, the part's unit; see sup_proto.h */ + int32_t cj_q7; uint16_t fault_bits; bool valid; }; @@ -621,8 +640,8 @@ tc_reading tc_read(const tc_dev &d) sup_tc_decode(regs, &sample); /* the decode is in sup_core, tested */ tc_reading r = {}; - r.chamber_c = sample.chamber_c; - r.cj_c = sample.cj_c; + r.chamber_q7 = sample.chamber_q7; + r.cj_q7 = sample.cj_q7; r.fault_bits = sample.fault_bits; r.valid = sample.valid; return r; @@ -635,8 +654,9 @@ tc_reading tc_read(const tc_dev &d) * to hold, and all three are checked rather than assumed: * * MASK is written FIRST, because until it is cleared the part's ~FAULT output - * stays inert, and PA3 would read "no fault" from a part that had not yet been - * told to report any. + * stays inert, and the fault input would read "no fault" from a part that had + * not yet been told to report any. True of both front ends, which is why this + * is written once and handed a descriptor. * * CR1 is read back. An absent part, or a bus stuck at either rail, reads 0x00 * or 0xFF, and neither is a configured CR1. This is the check that @@ -738,14 +758,15 @@ int main() sup_flow_mark(&flow, SUP_FLOW_READ); sup_input_t in = {}; - in.chamber_c = tc.chamber_c; - in.chamber_valid = tc.valid && !pin_low(SUP_PIN_TC_FAULT); - /* No hardware ~FAULT pin for the second front end: its status register - * carries the same information over SPI, and the pin on the first is a - * legacy of the discrete chain the supervisor replaced. One pin saved, - * nothing lost. */ - in.chamber2_c = tc2.chamber_c; - in.chamber2_valid = tc2.valid; + in.chamber_q7 = tc.chamber_q7; + in.chamber_valid = tc.valid && !pin_low(PORT_A, SUP_PIN_TC_FAULT); + /* The same two terms as the first couple, and for the same reason. The + * status register would carry these fault bits over SPI anyway, but it + * arrives over the very bus whose failure the reading needs qualifying + * against; the pin is an indication that does not share silicon with the + * data path. See the note in pins.h. */ + in.chamber2_q7 = tc2.chamber_q7; + in.chamber2_valid = tc2.valid && !pin_low(PORT_B, SUP_PIN_TC2_FAULT); /* The union, so a fault on either front end is reported and acted on. * The trip logic does not need to know which one; the flags say which * couple is usable and that is what the ESP32 shows. */ @@ -754,14 +775,14 @@ int main() /* The button is a level on a pin; whether it *means* anything is * sup_step's decision, because it is edge triggered and held and that * belongs in the part that has tests. */ - in.clear_pressed = pin_low(SUP_PIN_CLEAR); + in.clear_pressed = pin_low(PORT_A, SUP_PIN_CLEAR); /* SWR-SAF-36: every periodic diagnostic, in one conjunction. A false * here revokes the self-test inside sup_step, which withholds heat for * good and cannot be cleared by the button. */ in.diag_ok = stack_ok() && ram_step() && prev_flow_ok; - sup_step(&sup, &in, CYCLE_S); + sup_step(&sup, &in, CYCLE_MS); sup_flow_mark(&flow, SUP_FLOW_STEP); /* The output is driven every cycle rather than on change, so a bit @@ -772,8 +793,10 @@ int main() sup_report_t rep = {}; rep.version = SUP_VERSION; rep.seq = seq++; - rep.chamber_c = tc.chamber_c; - rep.cj_c = tc.cj_c; + /* Scaled to tenths here, at the wire, which is the only place in the + * firmware where a temperature changes unit. */ + rep.chamber_dc = sup_q7_to_dc(tc.chamber_q7); + rep.cj_dc = sup_q7_to_dc(tc.cj_q7); rep.fault_bits = tc.fault_bits; rep.flags = sup_flags(&sup, &in); rep.trip_reason = sup.reason; diff --git a/firmware/supervisor/test/.clang-tidy b/firmware/supervisor/test/.clang-tidy new file mode 100644 index 0000000..8ffcf7c --- /dev/null +++ b/firmware/supervisor/test/.clang-tidy @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# The supervisor's suites inherit the root profile and relax two checks, both +# of which fire on the test harness rather than on anything a person wrote. +# This is deliberately SHORTER than firmware/controller/test/.clang-tidy: that +# file disables six more checks for negative tests that cast out-of-range +# values to enums and pass deliberately hostile bytes, and the supervisor's +# suites do neither, so none of those exemptions is carried over. Nothing here +# is disabled for firmware/supervisor/core, protocol, board or src. +# +# use-anonymous-namespace 162 findings, every one of them the two static +# use-internal-linkage ... functions KILN_TEST() expands to. The diagnostic +# lands on the expansion site, so a NOLINT cannot +# reach it, and the macro cannot open a namespace +# because it has no way to emit the closing brace +# after the caller's `{ body }`. Same reasoning, +# and the same macro, as the controller's suites. +# +# Everything else the root profile asks for is met: the four suites are clean +# under it with no other exemption, const-correctness included. +InheritParentConfig: true +Checks: > + -misc-use-anonymous-namespace, + -misc-use-internal-linkage diff --git a/firmware/supervisor/test/host/CMakeLists.txt b/firmware/supervisor/test/host/CMakeLists.txt index 02e4081..6081c96 100644 --- a/firmware/supervisor/test/host/CMakeLists.txt +++ b/firmware/supervisor/test/host/CMakeLists.txt @@ -4,6 +4,9 @@ # Host tests for the supervisor. Plain CMake, no ARM toolchain needed: the # trip logic and the wire format are the whole safety function and both are # platform-free by construction (SWA-22), so both are exercised here. +# +# cmake -B build-sup -S firmware/supervisor/test/host [-DENABLE_ASAN=ON] +# cmake --build build-sup && ctest --test-dir build-sup cmake_minimum_required(VERSION 3.16) project(kiln_supervisor_tests CXX) @@ -11,6 +14,48 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_options(-Wall -Wextra -Werror -Wshadow) +# SWR-TST-20, the same option name and the same sanitiser pair the controller's +# host build carries, so one flag means one thing across the repository. +# +# It earns its place here for a reason the controller's does not share. The +# supervisor's arithmetic is all fixed point: a 19-bit field reassembled across +# three register bytes, a sign-extending shift, a magnitude taken in unsigned +# arithmetic, saturating millisecond timers. Every one of those has an +# undefined-behaviour failure mode that is invisible at -O0 on x86 and would +# be a wrong temperature on the target: a signed shift overflowing, a negation +# of INT32_MIN, a multiply leaving int32_t. UBSan is the tool that catches +# exactly that class, and the trip logic is the last place to find it by +# reading. +# +# Note what is deliberately NOT enabled: unsigned-integer-overflow. add_ms and +# the disagreement magnitude both RELY on unsigned wrap being defined, which it +# is, so that check would report the two places most carefully written. +# -fno-sanitize-recover=undefined is not optional and is the reason this block +# is not a two-line copy of the controller's. UBSan's DEFAULT is to print a +# runtime error and carry on, leaving the exit code at zero: a test that +# triggers real undefined behaviour reports it on stderr and ctest calls it +# PASSED. A gate that prints the finding and goes green is worse than no gate, +# because it looks like one. This makes the first finding abort. +# +# Checked rather than assumed: reintroducing the signed `hi - lo` that +# `disagreeing` deliberately avoids produces "signed integer overflow" from +# test_trip and a non-zero exit, and removing this option makes the same run +# pass. ASan already aborts by default; it is UBSan that needed saying. +# `enum` is excluded to match the controller's block, where three negative +# tests cast out-of-range values to an enum on purpose; see that file. The +# supervisor's sup_decode writes a wire byte into a sup_trip_reason_t the same +# way, so a test for an unrecognised reason would trip it here too. One flag +# meaning one thing in both halves is worth more than enabling a check on the +# half that happens not to exercise it yet. +option(ENABLE_ASAN "Build with AddressSanitizer + UBSan (SWR-TST-20)" OFF) +if(ENABLE_ASAN) + add_compile_options(-fsanitize=address,undefined -fno-sanitize=enum + -fno-sanitize-recover=undefined + -fno-omit-frame-pointer -g) + add_link_options(-fsanitize=address,undefined -fno-sanitize=enum + -fno-sanitize-recover=undefined) +endif() + set(SUP_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..) set(FW_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../controller) diff --git a/firmware/supervisor/test/host/test_max31856.cpp b/firmware/supervisor/test/host/test_max31856.cpp index e96c6e2..c8ee9a1 100644 --- a/firmware/supervisor/test/host/test_max31856.cpp +++ b/firmware/supervisor/test/host/test_max31856.cpp @@ -19,11 +19,17 @@ namespace { -/* CJTH, CJTL, LTCBH, LTCBM, LTCBL, SR. */ +/* CJTH, CJTL, LTCBH, LTCBM, LTCBL, SR, and the q7 the burst must decode to. + * + * The expectations are exact integers rather than degrees within a tolerance, + * and that is the decode's own property showing through: the part's LSB IS the + * supervisor's unit, so there is no scaling step for a vector to be + * approximately right about. A wrong shift is now a failed equality rather + * than a value that happens to sit inside 0.01 degC. */ struct vector { uint8_t regs[SUP_TC_BURST_BYTES]; - float chamber_c; - float cj_c; + int32_t chamber_q7; + int32_t cj_q7; }; sup_tc_sample_t decode(const uint8_t (®s)[SUP_TC_BURST_BYTES]) @@ -75,17 +81,25 @@ KILN_TEST(swracq02_cr1_readback_rejects_an_absent_part) KILN_TEST(swracq04_known_temperatures_decode_to_the_values_they_encode) { static const vector v[] = { - { { 0x19, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0.0f, 25.0f }, - { { 0x2A, 0x80, 0x3E, 0x80, 0x00, 0x00 }, 1000.0f, 42.5f }, - { { 0x1E, 0x00, 0x54, 0x58, 0x00, 0x00 }, 1349.5f, 30.0f }, - { { 0x1E, 0x00, 0x54, 0x68, 0x00, 0x00 }, 1350.5f, 30.0f }, + /* The q7 columns are the degrees the datasheet layout encodes, times + * 128: 0, 1000, 1349.5 and 1350.5 degC for the hot junction, and 25, + * 42.5, 30 and 30 for the cold. Written as the arithmetic rather than + * as a bare number so the vector still says what it means. */ + { { 0x19, 0x00, 0x00, 0x00, 0x00, 0x00 }, sup_c_to_q7(0), + sup_c_to_q7(25) }, + { { 0x2A, 0x80, 0x3E, 0x80, 0x00, 0x00 }, sup_c_to_q7(1000), + sup_c_to_q7(42) + 64 }, + { { 0x1E, 0x00, 0x54, 0x58, 0x00, 0x00 }, sup_c_to_q7(1349) + 64, + sup_c_to_q7(30) }, + { { 0x1E, 0x00, 0x54, 0x68, 0x00, 0x00 }, sup_c_to_q7(1350) + 64, + sup_c_to_q7(30) }, }; for (const vector &c : v) { const sup_tc_sample_t s = decode(c.regs); CHECK(s.valid); CHECK_EQ_UINT(s.fault_bits, 0u); - CHECK_NEAR(s.chamber_c, c.chamber_c, 0.01); - CHECK_NEAR(s.cj_c, c.cj_c, 0.01); + CHECK_EQ_INT(s.chamber_q7, c.chamber_q7); + CHECK_EQ_INT(s.cj_q7, c.cj_q7); } } @@ -95,22 +109,24 @@ KILN_TEST(swracq04_known_temperatures_decode_to_the_values_they_encode) KILN_TEST(swrsaf05_a_negative_reading_stays_negative) { /* The reason the shift in the decoder is signed. A logical shift would read - * -1 degC as +524287, which is above SUP_OVERTEMP_C, so the supervisor + * -1 degC as +524287, which is above SUP_OVERTEMP, so the supervisor * would latch an over-temperature on a cold kiln: a nuisance trip, and * HZ-10 is about what nuisance trips lead people to do. * * It also matters the other way: SWR-SAF-05 detects a reversed couple by the * reading falling, which it cannot do if negative is unrepresentable. */ static const vector v[] = { - { { 0xFB, 0x00, 0xFF, 0x38, 0x00, 0x00 }, -12.5f, -5.0f }, - { { 0x14, 0x00, 0xFF, 0xF0, 0x00, 0x00 }, -1.0f, 20.0f }, + { { 0xFB, 0x00, 0xFF, 0x38, 0x00, 0x00 }, sup_c_to_q7(-12) - 64, + sup_c_to_q7(-5) }, + { { 0x14, 0x00, 0xFF, 0xF0, 0x00, 0x00 }, sup_c_to_q7(-1), + sup_c_to_q7(20) }, }; for (const vector &c : v) { const sup_tc_sample_t s = decode(c.regs); CHECK(s.valid); - CHECK(s.chamber_c < 0.0f); - CHECK_NEAR(s.chamber_c, c.chamber_c, 0.01); - CHECK_NEAR(s.cj_c, c.cj_c, 0.01); + CHECK(s.chamber_q7 < 0); + CHECK_EQ_INT(s.chamber_q7, c.chamber_q7); + CHECK_EQ_INT(s.cj_q7, c.cj_q7); } } @@ -189,7 +205,7 @@ KILN_TEST(swrsaf04_a_fault_bit_makes_the_reading_unusable_however_plausible_it_i CHECK_EQ_UINT(s.fault_bits, (unsigned)SUP_TC_FAULT_OPEN); /* The number is still decoded and still reported: the ESP32 shows it, and * suppressing it would lose the one clue about what the sensor was doing. */ - CHECK_NEAR(s.chamber_c, 1000.0f, 0.01); + CHECK_EQ_INT(s.chamber_q7, sup_c_to_q7(1000)); } /* @@ -209,18 +225,18 @@ KILN_TEST(swa22_a_decoded_reading_drives_the_trip_logic_end_to_end) sup_tc_sample_t sample = decode(hot); sup_input_t in = {}; in.diag_ok = true; - in.chamber_c = sample.chamber_c; + in.chamber_q7 = sample.chamber_q7; in.chamber_valid = sample.valid; in.fault_bits = sample.fault_bits; - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, 100u); CHECK(s.permit); /* 1349.5 is below the backstop */ CHECK(!s.tripped); sample = decode(over); - in.chamber_c = sample.chamber_c; + in.chamber_q7 = sample.chamber_q7; in.chamber_valid = sample.valid; in.fault_bits = sample.fault_bits; - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, 100u); CHECK(!s.permit); /* 1350.5 is above it */ CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); diff --git a/firmware/supervisor/test/host/test_proto.cpp b/firmware/supervisor/test/host/test_proto.cpp index b05c623..db3f70e 100644 --- a/firmware/supervisor/test/host/test_proto.cpp +++ b/firmware/supervisor/test/host/test_proto.cpp @@ -17,8 +17,8 @@ sup_report_t sample() sup_report_t r = {}; r.version = SUP_VERSION; r.seq = 42u; - r.chamber_c = 1234.5f; - r.cj_c = 28.3f; + r.chamber_dc = 12345; /* 1234.5 degC in tenths */ + r.cj_dc = 283; /* 28.3 degC */ r.fault_bits = 0u; r.flags = (uint8_t)(SUP_FLAG_PERMIT | SUP_FLAG_TC_VALID | SUP_FLAG_SELFTEST_OK); r.trip_reason = SUP_TRIP_NONE; @@ -55,8 +55,11 @@ KILN_TEST(swa22_a_frame_round_trips) CHECK_EQ_UINT(skip, 0u); CHECK_EQ_UINT(out.version, SUP_VERSION); CHECK_EQ_UINT(out.seq, 42u); - CHECK_NEAR(out.chamber_c, 1234.5f, 0.05); - CHECK_NEAR(out.cj_c, 28.3f, 0.05); + /* Exact equality, not a tolerance: the frame carries the same integer the + * report held, so a round trip that loses anything is a defect rather than + * a rounding. The float version could only ever check "close enough". */ + CHECK_EQ_INT(out.chamber_dc, 12345); + CHECK_EQ_INT(out.cj_dc, 283); CHECK_EQ_UINT(out.flags, in.flags); CHECK_EQ_INT(out.trip_reason, SUP_TRIP_NONE); } @@ -159,26 +162,54 @@ KILN_TEST(swa22_a_buffer_of_pure_noise_is_eventually_discardable) /* * @relation(SWA-22, scope=function) */ -KILN_TEST(swa22_temperatures_saturate_rather_than_wrap_and_survive_a_nan) +KILN_TEST(swa22_q7_to_tenths_is_exact_rounded_and_saturating) { + /* The scaling and the saturation used to live inside sup_encode, where they + * could only be observed through a frame, and the input that needed + * defending against was a NaN. Both moved into sup_q7_to_dc, which is a + * total function of an int32_t and can therefore be pinned directly. + * + * Exact cases first: 10/128 is 5/64, so any q7 that is a multiple of 64 + * converts without rounding at all. */ + CHECK_EQ_INT(sup_q7_to_dc(0), 0); + CHECK_EQ_INT(sup_q7_to_dc(sup_c_to_q7(1)), 10); + CHECK_EQ_INT(sup_q7_to_dc(sup_c_to_q7(1350)), 13500); + CHECK_EQ_INT(sup_q7_to_dc(sup_c_to_q7(-200)), -2000); + + /* Rounding, symmetrically about zero. One q7 LSB is 1/128 degC, so 12 of + * them is 0.09375 degC and must round to 0.1; six is 0.046875 and must + * round to 0.0. */ + CHECK_EQ_INT(sup_q7_to_dc(12), 1); + CHECK_EQ_INT(sup_q7_to_dc(-12), -1); + CHECK_EQ_INT(sup_q7_to_dc(6), 0); + CHECK_EQ_INT(sup_q7_to_dc(-6), 0); + /* Exactly half a tenth, which is where truncation and rounding differ: + * 6.4 q7 is not representable, so the nearest half is 32 q7 = 0.25 degC, + * rounding away from zero to 0.3 and -0.3 rather than towards it. */ + CHECK_EQ_INT(sup_q7_to_dc(32), 3); + CHECK_EQ_INT(sup_q7_to_dc(-32), -3); + + /* Saturation at both ends, for values no front end can produce. The point + * is that the function is defined for every int32_t, INT32_MIN included, + * which is the input that would break a negate-then-divide. */ + CHECK_EQ_INT(sup_q7_to_dc(INT32_MAX), 32767); + CHECK_EQ_INT(sup_q7_to_dc(INT32_MIN), -32767); + CHECK_EQ_INT(sup_q7_to_dc(sup_c_to_q7(100000)), 32767); + CHECK_EQ_INT(sup_q7_to_dc(sup_c_to_q7(-100000)), -32767); + + /* And the frame carries whatever it is handed, unchanged: sup_encode holds + * no arithmetic now, which is why the cases above are the whole of it. */ sup_report_t r = sample(); uint8_t buf[SUP_FRAME_BYTES]; sup_report_t out = {}; - - r.chamber_c = 9999.0f; + r.chamber_dc = 32767; (void)sup_encode(&r, buf, sizeof(buf)); (void)sup_decode(buf, sizeof(buf), &out, nullptr); - CHECK(out.chamber_c > 3000.0f); /* saturated, not wrapped negative */ - - r.chamber_c = -9999.0f; + CHECK_EQ_INT(out.chamber_dc, 32767); + r.chamber_dc = -32767; (void)sup_encode(&r, buf, sizeof(buf)); (void)sup_decode(buf, sizeof(buf), &out, nullptr); - CHECK(out.chamber_c < -3000.0f); - - r.chamber_c = NAN; - CHECK_EQ_UINT(sup_encode(&r, buf, sizeof(buf)), SUP_FRAME_BYTES); - (void)sup_decode(buf, sizeof(buf), &out, nullptr); - CHECK_NEAR(out.chamber_c, 0.0f, 0.05); /* a defined value, not garbage */ + CHECK_EQ_INT(out.chamber_dc, -32767); } /* @@ -189,7 +220,7 @@ KILN_TEST(swa22_a_trip_is_still_reported_so_the_other_side_can_say_why) sup_report_t r = sample(); r.flags = (uint8_t)(SUP_FLAG_TRIPPED | SUP_FLAG_TC_VALID | SUP_FLAG_SELFTEST_OK); r.trip_reason = SUP_TRIP_OVERTEMP; - r.chamber_c = 1361.2f; + r.chamber_dc = 13612; uint8_t buf[SUP_FRAME_BYTES]; (void)sup_encode(&r, buf, sizeof(buf)); diff --git a/firmware/supervisor/test/host/test_trip.cpp b/firmware/supervisor/test/host/test_trip.cpp index 41c3ded..0113d3a 100644 --- a/firmware/supervisor/test/host/test_trip.cpp +++ b/firmware/supervisor/test/host/test_trip.cpp @@ -5,17 +5,26 @@ * sharing a test harness does not share product code, and reinventing one * would be the only thing worse. */ -#include - #include "kiln_check.h" #include "sup/trip.h" namespace { -sup_input_t ok_at(float c) +/* One cycle of the supervisor's own 10 Hz loop, in the unit sup_step takes. + * The suites step in whole cycles so that a stated duration is an exact number + * of them: the float version advanced by 0.1f and accumulated the error, which + * put a "run for exactly the grace period" case either side of the boundary + * depending on how many cycles it took to get there. */ +constexpr uint32_t STEP_MS = 100u; + +/* Readings are q7, 1/128 degC. Tests say what they mean in degrees through + * sup_c_to_q7 and, where a boundary is the point, in LSBs either side of a + * threshold, which is a sharper test than a fraction of a degree: it is the + * smallest difference the front end can actually report. */ +sup_input_t ok_at(int32_t q7) { sup_input_t in = {}; - in.chamber_c = c; + in.chamber_q7 = q7; in.chamber_valid = true; in.fault_bits = 0u; in.diag_ok = true; @@ -23,10 +32,10 @@ sup_input_t ok_at(float c) } /* Run for a while at one input, 10 Hz, the supervisor's own cycle. */ -void run_for(sup_t *s, const sup_input_t *in, float seconds) +void run_for(sup_t *s, const sup_input_t *in, uint32_t ms) { - for (float t = 0.0f; t < seconds; t += 0.1f) { - sup_step(s, in, 0.1f); + for (uint32_t t = 0; t < ms; t += STEP_MS) { + sup_step(s, in, STEP_MS); } } @@ -48,7 +57,7 @@ KILN_TEST(swa22_comes_up_refusing_heat_before_any_conversion) sup_input_t in = {}; in.chamber_valid = false; in.diag_ok = true; /* isolate what this test is about */ - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, STEP_MS); CHECK(!s.permit); } @@ -59,8 +68,8 @@ KILN_TEST(swa22_permits_heat_once_a_good_reading_arrives) { sup_t s; sup_init(&s, true); - const sup_input_t in = ok_at(600.0f); - sup_step(&s, &in, 0.1f); + const sup_input_t in = ok_at(sup_c_to_q7(600)); + sup_step(&s, &in, STEP_MS); CHECK(s.permit); CHECK(!s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_NONE); @@ -74,8 +83,8 @@ KILN_TEST(swrsaf23_latches_above_the_backstop_without_waiting) /* A backstop does not have a grace period. */ sup_t s; sup_init(&s, true); - const sup_input_t hot = ok_at(SUP_OVERTEMP_C + 0.5f); - sup_step(&s, &hot, 0.1f); + const sup_input_t hot = ok_at(SUP_OVERTEMP + 1); + sup_step(&s, &hot, STEP_MS); CHECK(!s.permit); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); @@ -90,13 +99,13 @@ KILN_TEST(swrsaf23_does_not_trip_at_the_ceiling_or_just_below_the_backstop) * that fires at the top of the usable range is a broken product. */ sup_t s; sup_init(&s, true); - const sup_input_t at_ceiling = ok_at(1300.0f); - run_for(&s, &at_ceiling, 10.0f); + const sup_input_t at_ceiling = ok_at(sup_c_to_q7(1300)); + run_for(&s, &at_ceiling, 10000u); CHECK(s.permit); CHECK(!s.tripped); - const sup_input_t just_under = ok_at(SUP_OVERTEMP_C); - sup_step(&s, &just_under, 0.1f); + const sup_input_t just_under = ok_at(SUP_OVERTEMP); + sup_step(&s, &just_under, STEP_MS); CHECK(s.permit); /* the comparison is strictly greater-than */ CHECK(!s.tripped); } @@ -108,12 +117,12 @@ KILN_TEST(swrsaf23_overtemp_does_not_unlatch_when_it_cools) { sup_t s; sup_init(&s, true); - const sup_input_t hot = ok_at(SUP_OVERTEMP_C + 10.0f); - sup_step(&s, &hot, 0.1f); + const sup_input_t hot = ok_at(SUP_OVERTEMP + sup_c_to_q7(10)); + sup_step(&s, &hot, STEP_MS); CHECK(s.tripped); - const sup_input_t cool = ok_at(200.0f); - run_for(&s, &cool, 60.0f); + const sup_input_t cool = ok_at(sup_c_to_q7(200)); + run_for(&s, &cool, 60000u); CHECK(s.tripped); CHECK(!s.permit); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); @@ -126,17 +135,17 @@ KILN_TEST(swrsaf04_withholds_heat_at_once_on_a_fault_and_latches_after_the_grace { sup_t s; sup_init(&s, true); - const sup_input_t good = ok_at(500.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(500)); + sup_step(&s, &good, STEP_MS); CHECK(s.permit); sup_input_t faulted = good; faulted.fault_bits = 1u; /* open circuit */ - sup_step(&s, &faulted, 0.1f); + sup_step(&s, &faulted, STEP_MS); CHECK(!s.permit); /* immediately */ CHECK(!s.tripped); /* but not yet latched */ - run_for(&s, &faulted, SUP_FAULT_GRACE_S + 0.2f); + run_for(&s, &faulted, SUP_FAULT_GRACE_MS + 200u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_TC_FAULT); } @@ -148,16 +157,16 @@ KILN_TEST(swrsaf04_a_transient_fault_shorter_than_the_grace_does_not_latch) { sup_t s; sup_init(&s, true); - const sup_input_t good = ok_at(500.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(500)); + sup_step(&s, &good, STEP_MS); sup_input_t faulted = good; faulted.fault_bits = 2u; - sup_step(&s, &faulted, 0.3f); /* well under the grace */ + sup_step(&s, &faulted, 300u); /* well under the grace */ CHECK(!s.permit); CHECK(!s.tripped); - sup_step(&s, &good, 0.1f); /* recovers */ + sup_step(&s, &good, STEP_MS); /* recovers */ CHECK(s.permit); CHECK(!s.tripped); } @@ -172,12 +181,12 @@ KILN_TEST(swa22_an_unusable_reading_latches_as_stale_not_as_a_fault) * not a front end that never started. */ sup_t s; sup_init(&s, true); - const sup_input_t good = ok_at(500.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(500)); + sup_step(&s, &good, STEP_MS); sup_input_t stale = good; stale.chamber_valid = false; - run_for(&s, &stale, SUP_FAULT_GRACE_S + 0.2f); + run_for(&s, &stale, SUP_FAULT_GRACE_MS + 200u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SENSOR_STALE); } @@ -185,19 +194,43 @@ KILN_TEST(swa22_an_unusable_reading_latches_as_stale_not_as_a_fault) /* * @relation(SWA-22, scope=function) */ -KILN_TEST(swa22_a_nan_reading_is_stale_and_never_permits) -{ - /* The comparison against the backstop is false for a NaN whichever way it - * is written, so a non-finite reading must be caught by validity and not - * by the threshold. This is the failure the ESP32 side hit in enc_temp. */ - sup_t s; - sup_init(&s, true); - sup_input_t nan_in = ok_at(NAN); - sup_step(&s, &nan_in, 0.1f); +KILN_TEST(swa22_every_representable_reading_yields_a_decision) +{ + /* This replaces a test for a NaN reading, and the replacement is the + * point: with the readings int32_t there is no NaN to defend against, so + * what is checked now is that the decision is TOTAL. Every value the type + * can hold has to produce a defined permit and no undefined arithmetic, + * including values no thermocouple path can generate, because the struct is + * public and the next thing to fill it may not be the decode. + * + * INT32_MIN and INT32_MAX together are the pair that catches the two ways + * this could have been written wrongly: a signed subtraction in the + * disagreement check overflows for them, and negating INT32_MIN to take a + * magnitude is undefined on its own. Neither is reachable through + * sup_tc_decode's 19 bits, which is exactly why it is worth pinning here. */ + sup_t s; + sup_init(&s, true); + + sup_input_t extreme = ok_at(INT32_MAX); + extreme.chamber2_q7 = INT32_MIN; + extreme.chamber2_valid = true; + sup_step(&s, &extreme, STEP_MS); + /* Above the backstop on the higher of the two, so it trips at once, and + * the pair disagrees by more than any band, so heat is withheld twice + * over. */ CHECK(!s.permit); + CHECK(s.tripped); + CHECK_EQ_UINT((unsigned)s.reason, (unsigned)SUP_TRIP_OVERTEMP); - /* Declared valid *and* NaN is a caller bug, and must still not permit. */ - CHECK(!(nan_in.chamber_c <= SUP_OVERTEMP_C)); + /* And the other way round, which exercises the same magnitude with the + * operands swapped. */ + sup_t s2; + sup_init(&s2, true); + sup_input_t extreme2 = ok_at(INT32_MIN); + extreme2.chamber2_q7 = INT32_MAX; + extreme2.chamber2_valid = true; + sup_step(&s2, &extreme2, STEP_MS); + CHECK(!s2.permit); } /* @@ -210,8 +243,8 @@ KILN_TEST(swa22_a_failed_selftest_never_permits_and_cannot_be_cleared) CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); - const sup_input_t good = ok_at(500.0f); - run_for(&s, &good, 10.0f); + const sup_input_t good = ok_at(sup_c_to_q7(500)); + run_for(&s, &good, 10000u); CHECK(!s.permit); sup_clear(&s); /* an operator must not be able to */ @@ -226,8 +259,8 @@ KILN_TEST(swa22_clearing_a_trip_does_not_permit_until_conditions_are_re_establis { sup_t s; sup_init(&s, true); - sup_input_t in = ok_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &in, 0.1f); + sup_input_t in = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); sup_clear(&s); @@ -235,13 +268,13 @@ KILN_TEST(swa22_clearing_a_trip_does_not_permit_until_conditions_are_re_establis CHECK(!s.permit); /* not until a step says so */ /* Still hot: it latches straight back. */ - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); CHECK(!s.permit); sup_clear(&s); - in = ok_at(400.0f); - sup_step(&s, &in, 0.1f); + in = ok_at(sup_c_to_q7(400)); + sup_step(&s, &in, STEP_MS); CHECK(s.permit); } @@ -252,8 +285,8 @@ KILN_TEST(swa22_flags_describe_what_the_supervisor_is_doing) { sup_t s; sup_init(&s, true); - sup_input_t in = ok_at(500.0f); - sup_step(&s, &in, 0.1f); + const sup_input_t in = ok_at(sup_c_to_q7(500)); + sup_step(&s, &in, STEP_MS); const uint8_t f = sup_flags(&s, &in); CHECK((f & SUP_FLAG_PERMIT) != 0u); CHECK((f & SUP_FLAG_TC_VALID) != 0u); @@ -264,13 +297,13 @@ KILN_TEST(swa22_flags_describe_what_the_supervisor_is_doing) /* * @relation(SWR-NFR-17, scope=function) */ -KILN_TEST(swrnfr17_null_and_negative_time_are_refused_not_faulted) +KILN_TEST(swrnfr17_null_arguments_and_an_extreme_interval_are_refused_not_faulted) { sup_t s; sup_init(&s, true); - const sup_input_t in = ok_at(500.0f); - sup_step(nullptr, &in, 0.1f); /* must not fault */ - sup_step(&s, nullptr, 0.1f); + const sup_input_t in = ok_at(sup_c_to_q7(500)); + sup_step(nullptr, &in, STEP_MS); /* must not fault */ + sup_step(&s, nullptr, STEP_MS); sup_clear(nullptr); /* Both halves of each guard, independently. A guard where only the first * condition has ever been exercised is a guard half tested, which is what @@ -278,13 +311,18 @@ KILN_TEST(swrnfr17_null_and_negative_time_are_refused_not_faulted) CHECK_EQ_UINT(sup_flags(nullptr, &in), 0u); CHECK_EQ_UINT(sup_flags(&s, nullptr), 0u); - /* A negative or NaN dt must not wind a timer backwards. */ + /* The float version checked here that a negative or a NaN interval could + * not wind a timer backwards. A uint32_t can be neither, so what is left + * to check is the one pathological interval that still exists: an enormous + * one, which must saturate the timer rather than wrap it back below the + * threshold and un-arm a condition that is still present. */ sup_input_t faulted = in; faulted.fault_bits = 1u; - sup_step(&s, &faulted, -5.0f); - CHECK_NEAR(s.fault_s, 0.0f, 1e-6); - sup_step(&s, &faulted, NAN); - CHECK_NEAR(s.fault_s, 0.0f, 1e-6); + sup_step(&s, &faulted, UINT32_MAX); + CHECK_EQ_UINT(s.fault_ms, UINT32_MAX); + sup_step(&s, &faulted, UINT32_MAX); + CHECK_EQ_UINT(s.fault_ms, UINT32_MAX); /* saturated, not wrapped */ + CHECK(s.tripped); } /* --- the clear button (R4) ---------------------------------------------- */ @@ -296,20 +334,20 @@ KILN_TEST(swrsaf32_a_held_button_clears_the_latch_once_the_hold_elapses) { sup_t s; sup_init(&s, true); - sup_input_t in = ok_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &in, 0.1f); + sup_input_t in = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); /* Released first, so the button arms, then cooled, then held. */ - in = ok_at(300.0f); - sup_step(&s, &in, 0.1f); + in = ok_at(sup_c_to_q7(300)); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); in.clear_pressed = true; - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); /* not yet: it must be held */ - run_for(&s, &in, SUP_CLEAR_HOLD_S + 0.2f); + run_for(&s, &in, SUP_CLEAR_HOLD_MS + 200u); CHECK(!s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_NONE); } @@ -321,15 +359,15 @@ KILN_TEST(swrsaf32_a_tap_shorter_than_the_hold_does_not_clear) { sup_t s; sup_init(&s, true); - sup_input_t in = ok_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &in, 0.1f); - in = ok_at(300.0f); - sup_step(&s, &in, 0.1f); /* arm */ + sup_input_t in = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &in, STEP_MS); + in = ok_at(sup_c_to_q7(300)); + sup_step(&s, &in, STEP_MS); /* arm */ in.clear_pressed = true; - sup_step(&s, &in, 0.2f); /* well short of the hold */ + sup_step(&s, &in, 200u); /* well short of the hold */ in.clear_pressed = false; - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); } @@ -343,15 +381,15 @@ KILN_TEST(swrsaf32_a_line_stuck_low_never_clears_the_latch) * never seen released, so it never arms. */ sup_t s; sup_init(&s, true); - sup_input_t in = ok_at(SUP_OVERTEMP_C + 5.0f); + sup_input_t in = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); in.clear_pressed = true; /* shorted from the very first cycle */ - sup_step(&s, &in, 0.1f); + sup_step(&s, &in, STEP_MS); CHECK(s.tripped); /* Hold it low for a minute at a safe temperature. */ - sup_input_t cool = ok_at(300.0f); + sup_input_t cool = ok_at(sup_c_to_q7(300)); cool.clear_pressed = true; - run_for(&s, &cool, 60.0f); + run_for(&s, &cool, 60000u); CHECK(s.tripped); /* still latched */ CHECK(!s.permit); } @@ -365,27 +403,27 @@ KILN_TEST(swrsaf32_clearing_disarms_until_the_button_is_released_again) * supervisor re-latched, which is the stuck-line failure in slow motion. */ sup_t s; sup_init(&s, true); - sup_input_t cool = ok_at(300.0f); - sup_step(&s, &cool, 0.1f); /* arm: released and safe */ + const sup_input_t cool = ok_at(sup_c_to_q7(300)); + sup_step(&s, &cool, STEP_MS); /* arm: released and safe */ - sup_input_t hot = ok_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &hot, 0.1f); + sup_input_t hot = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &hot, STEP_MS); CHECK(s.tripped); /* Hold the button down and stay hot: it clears once, re-latches, and must * not clear again while still held. */ hot.clear_pressed = true; - run_for(&s, &hot, SUP_CLEAR_HOLD_S + 0.2f); + run_for(&s, &hot, SUP_CLEAR_HOLD_MS + 200u); CHECK(s.tripped); /* re-latched on the same input */ - run_for(&s, &hot, 10.0f); /* still held, still hot */ + run_for(&s, &hot, 10000u); /* still held, still hot */ CHECK(s.tripped); /* Release, cool, press again: now it clears. */ - sup_input_t cool2 = ok_at(300.0f); - sup_step(&s, &cool2, 0.1f); + sup_input_t cool2 = ok_at(sup_c_to_q7(300)); + sup_step(&s, &cool2, STEP_MS); cool2.clear_pressed = true; - run_for(&s, &cool2, SUP_CLEAR_HOLD_S + 0.2f); + run_for(&s, &cool2, SUP_CLEAR_HOLD_MS + 200u); CHECK(!s.tripped); } @@ -396,10 +434,10 @@ KILN_TEST(swrsaf32_the_button_cannot_clear_a_failed_selftest) { sup_t s; sup_init(&s, false); - sup_input_t in = ok_at(300.0f); - sup_step(&s, &in, 0.1f); /* arm */ + sup_input_t in = ok_at(sup_c_to_q7(300)); + sup_step(&s, &in, STEP_MS); /* arm */ in.clear_pressed = true; - run_for(&s, &in, 5.0f); + run_for(&s, &in, 5000u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); CHECK(!s.permit); @@ -414,15 +452,15 @@ KILN_TEST(swrsaf32_the_button_cannot_clear_a_condition_that_still_holds) * so the button cannot be held down to keep firing. */ sup_t s; sup_init(&s, true); - sup_input_t cool = ok_at(700.0f); - sup_step(&s, &cool, 0.1f); /* arm, permitted */ + const sup_input_t cool = ok_at(sup_c_to_q7(700)); + sup_step(&s, &cool, STEP_MS); /* arm, permitted */ - sup_input_t hot = ok_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &hot, 0.1f); + sup_input_t hot = ok_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &hot, STEP_MS); CHECK(s.tripped); hot.clear_pressed = true; - run_for(&s, &hot, SUP_CLEAR_HOLD_S + 0.5f); + run_for(&s, &hot, SUP_CLEAR_HOLD_MS + 500u); CHECK(!s.permit); CHECK(s.tripped); } @@ -441,8 +479,8 @@ KILN_TEST(syshw21_the_supervisor_has_no_lid_input_so_loading_cold_cannot_trip_it * test exists so that stays true. */ sup_t s; sup_init(&s, true); - const sup_input_t in = ok_at(300.0f); - run_for(&s, &in, 300.0f); /* five minutes of loading the kiln */ + const sup_input_t in = ok_at(sup_c_to_q7(300)); + run_for(&s, &in, 300000u); /* five minutes of loading the kiln */ CHECK(s.permit); CHECK(!s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_NONE); @@ -461,17 +499,17 @@ KILN_TEST(swa22_a_front_end_still_starting_up_withholds_heat_without_latching) * with nothing actually wrong. */ sup_t s; sup_init(&s, true); - sup_input_t starting = ok_at(0.0f); + sup_input_t starting = ok_at(sup_c_to_q7(0)); starting.chamber_valid = false; - run_for(&s, &starting, 30.0f); /* far beyond the grace */ + run_for(&s, &starting, 30000u); /* far beyond the grace */ CHECK(!s.permit); CHECK(!s.tripped); CHECK(!s.seen_valid); /* Then it comes up, and heat is permitted with no acknowledgement. */ - const sup_input_t good = ok_at(400.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(400)); + sup_step(&s, &good, STEP_MS); CHECK(s.permit); CHECK(!s.tripped); CHECK(s.seen_valid); @@ -486,17 +524,17 @@ KILN_TEST(swa22_a_reading_that_was_working_and_stopped_does_latch) * acknowledge rather than a slow start. */ sup_t s; sup_init(&s, true); - const sup_input_t good = ok_at(400.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(400)); + sup_step(&s, &good, STEP_MS); CHECK(s.seen_valid); sup_input_t lost = good; lost.chamber_valid = false; - sup_step(&s, &lost, 0.1f); + sup_step(&s, &lost, STEP_MS); CHECK(!s.permit); /* immediately */ CHECK(!s.tripped); - run_for(&s, &lost, SUP_FAULT_GRACE_S + 0.2f); + run_for(&s, &lost, SUP_FAULT_GRACE_MS + 200u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SENSOR_STALE); } @@ -511,11 +549,11 @@ KILN_TEST(swa22_a_reported_fault_latches_even_before_a_first_reading) * conversion ever arrived. */ sup_t s; sup_init(&s, true); - sup_input_t faulted = ok_at(0.0f); + sup_input_t faulted = ok_at(sup_c_to_q7(0)); faulted.chamber_valid = false; faulted.fault_bits = 1u; /* open circuit */ - run_for(&s, &faulted, SUP_FAULT_GRACE_S + 0.2f); + run_for(&s, &faulted, SUP_FAULT_GRACE_MS + 200u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_TC_FAULT); } @@ -530,13 +568,13 @@ KILN_TEST(swrsaf36_a_failed_diagnostic_withholds_heat_immediately) /* Establish a healthy cycle first, so the test shows the diagnostic taking * permission away rather than never having granted it. */ - const sup_input_t good = ok_at(500.0f); - sup_step(&s, &good, 0.1f); + const sup_input_t good = ok_at(sup_c_to_q7(500)); + sup_step(&s, &good, STEP_MS); CHECK(s.permit); sup_input_t bad = good; bad.diag_ok = false; - sup_step(&s, &bad, 0.1f); + sup_step(&s, &bad, STEP_MS); CHECK(!s.permit); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); @@ -554,17 +592,17 @@ KILN_TEST(swrsaf36_a_failed_diagnostic_is_not_clearable_by_the_button) sup_t s; sup_init(&s, true); - sup_input_t bad = ok_at(500.0f); + sup_input_t bad = ok_at(sup_c_to_q7(500)); bad.diag_ok = false; - sup_step(&s, &bad, 0.1f); + sup_step(&s, &bad, STEP_MS); CHECK(s.tripped); /* Release, then hold the button well past the hold time, on a now-healthy * reading. It must not clear. */ - sup_input_t good = ok_at(500.0f); - sup_step(&s, &good, 0.1f); + sup_input_t good = ok_at(sup_c_to_q7(500)); + sup_step(&s, &good, STEP_MS); good.clear_pressed = true; - run_for(&s, &good, SUP_CLEAR_HOLD_S * 4.0f); + run_for(&s, &good, SUP_CLEAR_HOLD_MS * 4u); CHECK(s.tripped); CHECK(!s.permit); @@ -586,13 +624,13 @@ KILN_TEST(swrsaf36_a_diagnostic_failure_does_not_unlatch_when_it_passes_again) sup_t s; sup_init(&s, true); - sup_input_t bad = ok_at(400.0f); + sup_input_t bad = ok_at(sup_c_to_q7(400)); bad.diag_ok = false; - sup_step(&s, &bad, 0.1f); + sup_step(&s, &bad, STEP_MS); CHECK(s.tripped); - const sup_input_t good = ok_at(400.0f); - run_for(&s, &good, 10.0f); + const sup_input_t good = ok_at(sup_c_to_q7(400)); + run_for(&s, &good, 10000u); CHECK(s.tripped); CHECK(!s.permit); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); @@ -609,10 +647,10 @@ KILN_TEST(swrsaf36_a_zero_initialised_input_withholds_heat) sup_init(&s, true); sup_input_t forgotten = {}; - forgotten.chamber_c = 500.0f; + forgotten.chamber_q7 = sup_c_to_q7(500); forgotten.chamber_valid = true; /* diag_ok deliberately not set */ - sup_step(&s, &forgotten, 0.1f); + sup_step(&s, &forgotten, STEP_MS); CHECK(!s.permit); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); } @@ -627,10 +665,10 @@ KILN_TEST(swrsaf36_a_diagnostic_failure_outranks_a_thermocouple_fault) sup_t s; sup_init(&s, true); - sup_input_t both = ok_at(500.0f); + sup_input_t both = ok_at(sup_c_to_q7(500)); both.diag_ok = false; both.fault_bits = 1u; - run_for(&s, &both, SUP_FAULT_GRACE_S * 3.0f); + run_for(&s, &both, SUP_FAULT_GRACE_MS * 3u); CHECK(s.tripped); CHECK(!s.permit); @@ -641,11 +679,11 @@ KILN_TEST(swrsaf36_a_diagnostic_failure_outranks_a_thermocouple_fault) namespace { -/* Both couples valid and agreeing, at `c`. */ -sup_input_t pair_at(float c) +/* Both couples valid and agreeing, at `q7`. */ +sup_input_t pair_at(int32_t q7) { - sup_input_t in = ok_at(c); - in.chamber2_c = c; + sup_input_t in = ok_at(q7); + in.chamber2_q7 = q7; in.chamber2_valid = true; return in; } @@ -665,10 +703,10 @@ KILN_TEST(swrsaf37_a_low_reading_couple_cannot_mask_a_hot_kiln) sup_t s; sup_init(&s, true); - sup_input_t in = pair_at(200.0f); - in.chamber_c = SUP_OVERTEMP_C + 20.0f; /* couple 1 sees the truth */ - in.chamber2_c = 200.0f; /* couple 2 reads far low */ - sup_step(&s, &in, 0.1f); + sup_input_t in = pair_at(sup_c_to_q7(200)); + in.chamber_q7 = SUP_OVERTEMP + sup_c_to_q7(20); /* couple 1 sees the truth */ + in.chamber2_q7 = sup_c_to_q7(200); /* couple 2 reads far low */ + sup_step(&s, &in, STEP_MS); CHECK(!s.permit); CHECK(s.tripped); @@ -677,10 +715,10 @@ KILN_TEST(swrsaf37_a_low_reading_couple_cannot_mask_a_hot_kiln) /* and the other way round, because neither couple is privileged */ sup_t s2; sup_init(&s2, true); - sup_input_t flipped = pair_at(200.0f); - flipped.chamber_c = 200.0f; - flipped.chamber2_c = SUP_OVERTEMP_C + 20.0f; - sup_step(&s2, &flipped, 0.1f); + sup_input_t flipped = pair_at(sup_c_to_q7(200)); + flipped.chamber_q7 = sup_c_to_q7(200); + flipped.chamber2_q7 = SUP_OVERTEMP + sup_c_to_q7(20); + sup_step(&s2, &flipped, STEP_MS); CHECK(!s2.permit); CHECK_EQ_INT(s2.reason, SUP_TRIP_OVERTEMP); } @@ -692,8 +730,8 @@ KILN_TEST(swrsaf37_agreeing_couples_permit_heat_and_set_both_flags) { sup_t s; sup_init(&s, true); - const sup_input_t in = pair_at(600.0f); - sup_step(&s, &in, 0.1f); + const sup_input_t in = pair_at(sup_c_to_q7(600)); + sup_step(&s, &in, STEP_MS); CHECK(s.permit); CHECK(!s.tripped); @@ -710,16 +748,16 @@ KILN_TEST(swrsaf37_disagreement_withholds_heat_at_once_and_latches_after_the_win sup_t s; sup_init(&s, true); - sup_input_t apart = pair_at(500.0f); - apart.chamber2_c = 500.0f + SUP_DISAGREE_C + 10.0f; + sup_input_t apart = pair_at(sup_c_to_q7(500)); + apart.chamber2_q7 = sup_c_to_q7(500) + SUP_DISAGREE + sup_c_to_q7(10); /* Heat goes away on the first cycle; the window only delays the latch, * which is the same shape every confirmed rule in this firmware uses. */ - sup_step(&s, &apart, 0.1f); + sup_step(&s, &apart, STEP_MS); CHECK(!s.permit); CHECK(!s.tripped); - run_for(&s, &apart, SUP_DISAGREE_S); + run_for(&s, &apart, SUP_DISAGREE_MS); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_TC_DISAGREE); } @@ -735,9 +773,9 @@ KILN_TEST(swrsaf37_a_gradient_inside_the_band_is_not_a_disagreement) sup_t s; sup_init(&s, true); - sup_input_t near = pair_at(900.0f); - near.chamber2_c = 900.0f + SUP_DISAGREE_C - 1.0f; - run_for(&s, &near, SUP_DISAGREE_S * 3.0f); + sup_input_t near = pair_at(sup_c_to_q7(900)); + near.chamber2_q7 = sup_c_to_q7(900) + SUP_DISAGREE - 1; /* one LSB inside the band */ + run_for(&s, &near, SUP_DISAGREE_MS * 3u); CHECK(s.permit); CHECK(!s.tripped); @@ -751,18 +789,18 @@ KILN_TEST(swrsaf37_a_transient_disagreement_does_not_latch) sup_t s; sup_init(&s, true); - sup_input_t apart = pair_at(500.0f); - apart.chamber2_c = 500.0f + SUP_DISAGREE_C + 10.0f; - run_for(&s, &apart, SUP_DISAGREE_S * 0.5f); + sup_input_t apart = pair_at(sup_c_to_q7(500)); + apart.chamber2_q7 = sup_c_to_q7(500) + SUP_DISAGREE + sup_c_to_q7(10); + run_for(&s, &apart, (SUP_DISAGREE_MS * 5u) / 10u); CHECK(!s.tripped); - const sup_input_t together = pair_at(500.0f); - run_for(&s, &together, 1.0f); + const sup_input_t together = pair_at(sup_c_to_q7(500)); + run_for(&s, &together, 1000u); CHECK(!s.tripped); CHECK(s.permit); /* and the timer restarted rather than resuming where it left off */ - run_for(&s, &apart, SUP_DISAGREE_S * 0.6f); + run_for(&s, &apart, (SUP_DISAGREE_MS * 6u) / 10u); CHECK(!s.tripped); } @@ -778,10 +816,10 @@ KILN_TEST(swrsaf37_one_usable_couple_keeps_protecting_without_a_cross_check) sup_t s; sup_init(&s, true); - sup_input_t one = pair_at(600.0f); + sup_input_t one = pair_at(sup_c_to_q7(600)); one.chamber2_valid = false; - one.chamber2_c = 0.0f; /* a zero that must not be compared */ - sup_step(&s, &one, 0.1f); + one.chamber2_q7 = 0; /* a zero that must not be compared */ + sup_step(&s, &one, STEP_MS); CHECK(s.permit); CHECK(!s.tripped); @@ -789,8 +827,8 @@ KILN_TEST(swrsaf37_one_usable_couple_keeps_protecting_without_a_cross_check) /* and it still trips on temperature using the couple it has */ sup_input_t hot = one; - hot.chamber_c = SUP_OVERTEMP_C + 5.0f; - sup_step(&s, &hot, 0.1f); + hot.chamber_q7 = SUP_OVERTEMP + sup_c_to_q7(5); + sup_step(&s, &hot, STEP_MS); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); } @@ -803,14 +841,14 @@ KILN_TEST(swrsaf37_only_the_second_couple_usable_still_protects) sup_t s; sup_init(&s, true); - sup_input_t two_only = pair_at(600.0f); + sup_input_t two_only = pair_at(sup_c_to_q7(600)); two_only.chamber_valid = false; - two_only.chamber_c = 0.0f; - sup_step(&s, &two_only, 0.1f); + two_only.chamber_q7 = 0; + sup_step(&s, &two_only, STEP_MS); CHECK(s.permit); - two_only.chamber2_c = SUP_OVERTEMP_C + 5.0f; - sup_step(&s, &two_only, 0.1f); + two_only.chamber2_q7 = SUP_OVERTEMP + sup_c_to_q7(5); + sup_step(&s, &two_only, STEP_MS); CHECK(!s.permit); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); } @@ -818,18 +856,29 @@ KILN_TEST(swrsaf37_only_the_second_couple_usable_still_protects) /* * @relation(SWR-SAF-37, scope=function) */ -KILN_TEST(swrsaf37_a_nan_on_one_couple_cannot_win_the_comparison) +KILN_TEST(swrsaf37_a_negative_couple_cannot_win_the_comparison) { + /* This was a NaN on couple 2 and is now the integer equivalent: a reading + * far BELOW zero, which is the value that would win the comparison if the + * maximum were ever written as a minimum, and the one the sign-extending + * shift in the decode exists to produce correctly. Couple 1 decides, the + * kiln is below the backstop, and the pair is far enough apart to be caught + * by the disagreement rule rather than by the backstop. */ sup_t s; sup_init(&s, true); - sup_input_t nan2 = pair_at(600.0f); - nan2.chamber2_c = NAN; - /* Marked valid, which is the caller lying, and the arithmetic still must not - * produce a NaN effective temperature or report a disagreement. */ - sup_step(&s, &nan2, 0.1f); - CHECK(s.permit); /* 600 degC is below the backstop */ - CHECK(!s.tripped); + sup_input_t cold2 = pair_at(sup_c_to_q7(600)); + cold2.chamber2_q7 = sup_c_to_q7(-150); + sup_step(&s, &cold2, STEP_MS); + CHECK(!s.permit); /* they disagree by 750 degC */ + CHECK(!s.tripped); /* but not yet long enough to latch */ + + /* The effective reading is couple 1's 600 degC and not couple 2's -150, so + * once they agree again heat is permitted rather than the pair being + * dragged down. */ + const sup_input_t together = pair_at(sup_c_to_q7(600)); + sup_step(&s, &together, STEP_MS); + CHECK(s.permit); } /* --- SWR-SAF-38: the permit readback ------------------------------------ */ @@ -846,14 +895,14 @@ KILN_TEST(swrsaf38_a_coil_that_stays_on_after_the_permit_is_withdrawn_latches) sup_init(&s, true); /* Trip on temperature so the permit is withdrawn, then hold the sense high. */ - sup_input_t hot = pair_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &hot, 0.1f); + const sup_input_t hot = pair_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &hot, STEP_MS); CHECK(!s.permit); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); - sup_input_t stuck = pair_at(300.0f); + sup_input_t stuck = pair_at(sup_c_to_q7(300)); stuck.permit_sense = true; - run_for(&s, &stuck, SUP_PERMIT_SETTLE_S + 1.0f); + run_for(&s, &stuck, SUP_PERMIT_SETTLE_MS + 1000u); CHECK(s.tripped); /* It REPLACES the over-temperature reason, which is the one place in this @@ -876,15 +925,15 @@ KILN_TEST(swrsaf38_a_stuck_coil_does_not_override_a_failed_diagnostic) sup_t s; sup_init(&s, true); - sup_input_t diag_bad = pair_at(300.0f); + sup_input_t diag_bad = pair_at(sup_c_to_q7(300)); diag_bad.diag_ok = false; - sup_step(&s, &diag_bad, 0.1f); + sup_step(&s, &diag_bad, STEP_MS); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); - sup_input_t stuck = pair_at(300.0f); + sup_input_t stuck = pair_at(sup_c_to_q7(300)); stuck.diag_ok = false; stuck.permit_sense = true; - run_for(&s, &stuck, SUP_PERMIT_SETTLE_S + 1.0f); + run_for(&s, &stuck, SUP_PERMIT_SETTLE_MS + 1000u); CHECK(s.tripped); CHECK_EQ_INT(s.reason, SUP_TRIP_SELF_TEST); @@ -898,16 +947,16 @@ KILN_TEST(swrsaf38_a_slow_contactor_inside_the_settle_window_is_not_a_fault) sup_t s; sup_init(&s, true); - sup_input_t hot = pair_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &hot, 0.1f); + const sup_input_t hot = pair_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &hot, STEP_MS); - sup_input_t dropping = pair_at(300.0f); + sup_input_t dropping = pair_at(sup_c_to_q7(300)); dropping.permit_sense = true; - run_for(&s, &dropping, SUP_PERMIT_SETTLE_S * 0.5f); + run_for(&s, &dropping, (SUP_PERMIT_SETTLE_MS * 5u) / 10u); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); /* not yet the readback */ dropping.permit_sense = false; - run_for(&s, &dropping, 1.0f); + run_for(&s, &dropping, 1000u); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); /* and never becomes it */ } @@ -923,9 +972,9 @@ KILN_TEST(swrsaf38_a_commanded_permit_that_is_not_sensed_is_not_a_fault) sup_t s; sup_init(&s, true); - sup_input_t open_path = pair_at(500.0f); + sup_input_t open_path = pair_at(sup_c_to_q7(500)); open_path.permit_sense = false; /* permitted, but nothing flows */ - run_for(&s, &open_path, SUP_PERMIT_SETTLE_S * 5.0f); + run_for(&s, &open_path, SUP_PERMIT_SETTLE_MS * 5u); CHECK(s.permit); CHECK(!s.tripped); @@ -942,10 +991,10 @@ KILN_TEST(swrsaf38_a_board_with_no_readback_fitted_reports_no_fault) sup_t s; sup_init(&s, true); - sup_input_t no_sense = pair_at(SUP_OVERTEMP_C + 5.0f); - sup_step(&s, &no_sense, 0.1f); /* trips on temperature */ - sup_input_t cool = pair_at(300.0f); /* permit_sense stays false */ - run_for(&s, &cool, SUP_PERMIT_SETTLE_S * 5.0f); + const sup_input_t no_sense = pair_at(SUP_OVERTEMP + sup_c_to_q7(5)); + sup_step(&s, &no_sense, STEP_MS); /* trips on temperature */ + const sup_input_t cool = pair_at(sup_c_to_q7(300)); /* permit_sense stays false */ + run_for(&s, &cool, SUP_PERMIT_SETTLE_MS * 5u); CHECK_EQ_INT(s.reason, SUP_TRIP_OVERTEMP); } diff --git a/tasklist.md b/tasklist.md index d22f6e5..4c51eee 100644 --- a/tasklist.md +++ b/tasklist.md @@ -679,14 +679,82 @@ 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. -- [ ] **R10. Consider making the supervisor integer-only.** It currently uses - `float` for the chamber temperature, which on a Cortex-M0+ means every - compare and multiply is a libgcc soft-float call, and that is why the target - link needs `--specs=nano.specs` rather than `-nostdlib`. The MAX31856 - already reports a signed integer in 2^-7 degC units and the wire format is - integer tenths, so nothing in the path actually requires a float: the - backstop comparison could be done in raw LSBs. Smaller, more deterministic, - and it removes a library dependency from a safety function. +- [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 diff --git a/tools/tidy.sh b/tools/tidy.sh index 885c5d3..5e947e5 100755 --- a/tools/tidy.sh +++ b/tools/tidy.sh @@ -9,7 +9,7 @@ # # Analysis is driven from compile_commands.json rather than a glob over the # tree, because a file clang-tidy has no compile command for is analysed with -# guessed flags and reports nonsense. Two databases are therefore generated: +# guessed flags and reports nonsense. Four databases are therefore generated: # # firmware/controller/test/host the host build, which is almost everything. # firmware/controller/host/webhost @@ -17,10 +17,40 @@ # one taken from it; the components it links are already # covered above, and analysing them twice would just # double-report. +# firmware/supervisor/test/host +# the supervisor's core and protocol, plus its suites. +# Same filter logic: kiln_check.cpp is linked from the +# controller tree and is already covered above. +# synthesised the supervisor's two target-only units, src/main.cpp +# and board/startup.cpp, which no host project compiles. +# See THE SUPERVISOR'S BOARD LAYER below. # # One thing is still out of reach here: kiln_hal_esp32s3 needs the ESP-IDF # headers, so it is analysed by tools/tidy-target.sh against the database # idf.py emits. Both run in CI. +# +# --------------------------------------------------------------------------- +# THE SUPERVISOR'S BOARD LAYER +# --------------------------------------------------------------------------- +# src/main.cpp and board/startup.cpp are built only by the ARM target project, +# and STM32CubeCLT is not in CI. They are analysed against a *synthesised* +# database instead, with clang's own bare-metal target: both files include +# nothing but and the project's own headers, so -ffreestanding +# -nostdinc++ resolves everything without a sysroot and without arm-none-eabi +# being installed at all. +# +# The flags mirror firmware/supervisor/CMakeLists.txt rather than approximating +# it, because -Wconversion and -fno-exceptions change what the front end sees. +# They are listed in one place, SUP_TARGET_FLAGS, so the two cannot drift +# silently -- and if they do drift, the compiler is still the authority: this +# database only ever feeds the analyser. +# +# A synthesised database brings the vacuous-pass risk tools/tidy-target.sh +# documents at length: if the headers do not resolve, the files do not parse, +# clang-tidy reports nothing, and the run is green having checked nothing. So +# the same canary runs here, over the synthesised units only. The three real +# databases come from a CMake configure of a project that builds, and a parse +# failure in those shows up as a finding rather than as silence. set -euo pipefail cd "$(dirname "$0")/.." @@ -44,6 +74,8 @@ fi EXTRA=() # Homebrew clang does not know where the macOS SDK is; on Linux this is unset. +# Host databases only: handing -isysroot to the bare-metal parse below would +# put the macOS SDK on a thumbv6m include path. if [[ $(uname) == Darwin ]] && command -v xcrun >/dev/null 2>&1; then EXTRA+=(--extra-arg=-isysroot --extra-arg="$(xcrun --show-sdk-path)") fi @@ -58,6 +90,37 @@ if [[ ! -f $WEBHOST_BUILD/compile_commands.json ]]; then -DCMAKE_EXPORT_COMPILE_COMMANDS=ON >/dev/null fi +SUP_BUILD=${SUP_BUILD:-build-sup-tidy} +if [[ ! -f $SUP_BUILD/compile_commands.json ]]; then + cmake -B "$SUP_BUILD" -S firmware/supervisor/test/host \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON >/dev/null +fi + +# --- the synthesised database for the supervisor's board layer ------------- +SUP_TARGET_BUILD=${SUP_TARGET_BUILD:-build-sup-tidy-target} +SUP_TARGET_UNITS=(firmware/supervisor/src/main.cpp firmware/supervisor/board/startup.cpp) +SUP_TARGET_FLAGS=( + --target=thumbv6m-none-eabi -mcpu=cortex-m0plus + -ffreestanding -nostdinc++ -std=gnu++20 + -Wall -Wextra -Wshadow -Wconversion -Wdouble-promotion + -fno-exceptions -fno-rtti -fno-threadsafe-statics + -Ifirmware/supervisor/board + -Ifirmware/supervisor/core/include + -Ifirmware/supervisor/protocol/include) + +mkdir -p "$SUP_TARGET_BUILD" +python3 - "$SUP_TARGET_BUILD/compile_commands.json" "$PWD" \ + "${#SUP_TARGET_UNITS[@]}" "${SUP_TARGET_UNITS[@]}" "${SUP_TARGET_FLAGS[@]}" <<'PY' +import json, sys +dst, root, n = sys.argv[1], sys.argv[2], int(sys.argv[3]) +units = sys.argv[4:4 + n] +flags = sys.argv[4 + n:] +db = [{'directory': root, + 'arguments': ['clang++', *flags, '-c', f], + 'file': f} for f in units] +json.dump(db, open(dst, 'w'), indent=1) +PY + mapfile -t FILES < <(python3 -c " import json,sys print('\n'.join(sorted({e['file'] for e in json.load(open('$BUILD/compile_commands.json'))})))") @@ -74,24 +137,71 @@ print('\n'.join(sorted({e['file'] for e in db if '/host/webhost/' in e['file']}) exit 1 } +# Supervisor sources only: the suites link the controller's kiln_check.cpp, +# which the first database already covers. +mapfile -t SUP_FILES < <(python3 -c " +import json +db = json.load(open('$SUP_BUILD/compile_commands.json')) +print('\n'.join(sorted({e['file'] for e in db if '/firmware/supervisor/' in e['file']})))") +(( ${#SUP_FILES[@]} )) || { + echo "no supervisor translation unit in $SUP_BUILD -- refusing to report" \ + "clean for a project that was not analysed" >&2 + exit 1 +} + echo "clang-tidy: $("$TIDY" --version | grep -oE "version [0-9.]+" | head -1)" echo "analysing ${#FILES[@]} translation units from $BUILD/compile_commands.json" echo " and ${#WEBHOST_FILES[@]} from $WEBHOST_BUILD/compile_commands.json" - -ARGS=(-p "$BUILD" --quiet "${EXTRA[@]}") -(( FIX )) && ARGS+=(--fix --fix-errors) +echo " and ${#SUP_FILES[@]} from $SUP_BUILD/compile_commands.json" +echo " and ${#SUP_TARGET_UNITS[@]} from $SUP_TARGET_BUILD/compile_commands.json (synthesised)" log=$(mktemp) -trap 'rm -f "$log"' EXIT -rc=0 -for f in "${FILES[@]}"; do - "$TIDY" "${ARGS[@]}" "$f" >>"$log" 2>/dev/null || rc=1 +canary=$(mktemp) +trap 'rm -f "$log" "$canary"' EXIT + +# --- canary: prove the synthesised units actually parsed ------------------- +# function-size with a zero-statement threshold reports every function clang +# built an AST for. A file reporting none did not compile, and a "clean" +# verdict for it would mean nothing. Only the synthesised database needs +# this; see the header. +for f in "${SUP_TARGET_UNITS[@]}"; do + "$TIDY" -p "$SUP_TARGET_BUILD" --quiet --checks='-*,readability-function-size' \ + --config="{CheckOptions: {readability-function-size.StatementThreshold: 0}}" \ + "$f" >>"$canary" 2>/dev/null || true done -WEBHOST_ARGS=(-p "$WEBHOST_BUILD" --quiet "${EXTRA[@]}") -(( FIX )) && WEBHOST_ARGS+=(--fix --fix-errors) -for f in "${WEBHOST_FILES[@]}"; do - "$TIDY" "${WEBHOST_ARGS[@]}" "$f" >>"$log" 2>/dev/null || rc=1 +unparsed=() +for f in "${SUP_TARGET_UNITS[@]}"; do + grep -qF "$(basename "$f"):" "$canary" || unparsed+=("$f") done +if (( ${#unparsed[@]} )); then + echo "VACUOUS PASS AVERTED: clang-tidy built no AST for:" >&2 + printf ' %s\n' "${unparsed[@]}" >&2 + echo >&2 + echo "These files were not analysed, so a clean report would be a lie." \ + "The synthesised flags in SUP_TARGET_FLAGS no longer resolve this" \ + "code: check that clang still knows the thumbv6m-none-eabi target" \ + "and that nothing new is included from a hosted C library." >&2 + exit 1 +fi + +# --- the real analysis ----------------------------------------------------- +rc=0 +analyse() { + local db=$1; shift + local -a args=(-p "$db" --quiet) + # Host databases get the macOS sysroot; the bare-metal one must not. + [[ $db == "$SUP_TARGET_BUILD" ]] || args+=("${EXTRA[@]}") + (( FIX )) && args+=(--fix --fix-errors) + local f + for f in "$@"; do + "$TIDY" "${args[@]}" "$f" >>"$log" 2>/dev/null || rc=1 + done +} + +analyse "$BUILD" "${FILES[@]}" +analyse "$WEBHOST_BUILD" "${WEBHOST_FILES[@]}" +analyse "$SUP_BUILD" "${SUP_FILES[@]}" +analyse "$SUP_TARGET_BUILD" "${SUP_TARGET_UNITS[@]}" if grep -qE "error:|warning:" "$log"; then grep -E "error:|warning:" "$log" | sed "s|$PWD/||" | sort -u From 4d48630d6077aef1def7a6399ba59d6116181835 Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:13:39 +0200 Subject: [PATCH 02/22] chore: the kicad project is safekiln, and the fixture follows it The board, schematic and project file are renamed from kilncontrol to safekiln, matching what the firmware, the image and the documentation have called this product since the repository was reorganised. Three references had to move with it, and they are the ones that would have failed silently rather than loudly: fixture/pinside-baseline.json names the board it is a baseline OF, so a rename without it means `pinside check` has nothing to compare against. fixture/kilncontrol-fixture.json carries an absolute path to the board. It keeps its own filename: that is the fixture's name, not the project's, and renaming an input this project owns is a separate decision from renaming the board. fixture/README.md documents the command a person types. Not touched: fixture/firmware/ and fixture/board/, which pinside generates verbatim and will rewrite from the new name on the next run, and which CI already excludes from the SPDX check for the same reason. --- fixture/README.md | 2 +- fixture/kilncontrol-fixture.json | 2 +- fixture/pinside-baseline.json | 2 +- ...lncontrol.kicad_pcb => safekiln.kicad_pcb} | 33729 +++++++++------- ...lncontrol.kicad_pro => safekiln.kicad_pro} | 28 +- ...lncontrol.kicad_sch => safekiln.kicad_sch} | 14808 ++++--- 6 files changed, 27666 insertions(+), 20905 deletions(-) rename hardware/{kilncontrol.kicad_pcb => safekiln.kicad_pcb} (61%) rename hardware/{kilncontrol.kicad_pro => safekiln.kicad_pro} (97%) rename hardware/{kilncontrol.kicad_sch => safekiln.kicad_sch} (78%) 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) From f43b1110f809f6235d66606060f506da970dcad4 Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:14:01 +0200 Subject: [PATCH 03/22] feat: the device fetches its own updates, and the CRA bill comes with it The Cyber Resilience Act requires that a security fix can reach a unit, and SRR-11 recorded that none could without visiting it. OQ-08 and OQ-R4 are now answered, and the answer is a pull path rather than the staged push the question also offered. THE DIRECTION IS THE WHOLE DESIGN. The device checks a signed static manifest at update.bitcrushtesting.com once a day, announces a release on the LOCAL DISPLAY, and installs it only when somebody confirms there. A push path would have cost SEC-00 its absolute form, because an inbound route exists whether or not anybody is standing at the kiln; an outbound GET creates nothing on the LAN to talk to. SWR-WEB-26 and SEC-00 are therefore unchanged by this. What it costs is written down rather than smoothed over. TH-04 is Active again after being closed by the absence of the feature; TH-14 and TH-15 are new; SEC-06 narrows from "no outbound connection" to one, first-party, carrying nothing about the device; SRR-12 and SRR-13 are the new residual risks. SEC-12 carries the goal as three conditions that must hold together. tools/update-manifest.py builds and signs the manifest: an envelope whose payload is the base64 of the exact signed bytes, so a device verifies over those bytes and parses afterwards and canonicalisation is nobody's problem. RSA-3072-PSS-SHA256 from a key it refuses to let be the secure boot key (SRR-12: that one can never be rotated, this one is used every release). It also refuses an unsigned image, 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 every device must reject after downloading it. 80 self-test checks. SECURITY.md is the other half and was the most conspicuous gap: a disclosure policy, the Article 13(17) single point of contact, and the Article 14 reporting commitments, which apply from 11 September 2026 and do not wait for the firmware. security.md section 13 inventories what the Act still requires, in two tables: the firmware half, where six rows are evidence rather than work, and the half that is not firmware, whose Owner column is deliberately empty because this document cannot supply one. Three gaps it names had never been recorded: security event logging with an opt-out (SEC-13, SWR-LOG-16), permanent erasure as a function rather than a line in a manual (SEC-14, SWR-CFG-09), and an SBOM from the build (SWR-NFR-28). Two open questions changed character: OQ-S4, the access point that starts without a passphrase, is a secure-default requirement and the only live weakness in code that exists today, and OQ-S3, flash encryption, stops being a trade the project may decline on the sold-units route. Also in here: section 6.1, on why the supervisor's SWD port stays open. The STM32G031 has no secure boot to enable, and RDP Level 2 would close the port the independence argument rests on while an attacker who can reach the board can jumper the permit line more cheaply than reflash anything. --- .gitignore | 6 + SECURITY.md | 143 +++ docs/01_user_req.sdoc | 21 +- docs/03_software_req.sdoc | 154 ++- docs/architecture.md | 139 ++- docs/security.md | 353 +++++- docs/security.sdoc | 247 +++- docs/v-model-process.md | 17 +- .../include/kiln_ports/port_update.h | 51 +- firmware/controller/sdkconfig.defaults | 27 + tools/update-manifest.py | 1029 +++++++++++++++++ 11 files changed, 2133 insertions(+), 54 deletions(-) create mode 100644 SECURITY.md create mode 100755 tools/update-manifest.py diff --git a/.gitignore b/.gitignore index 29081a2..54afdb3 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,12 @@ 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/ + # Python bytecode from the tools/ scripts. __pycache__/ *.pyc 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..13889a4 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]] @@ -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]] @@ -1575,7 +1618,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 +1676,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 +2105,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 +2113,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 +2172,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 +2845,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..e247613 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -150,7 +150,7 @@ 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 | @@ -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/security.md b/docs/security.md index c0e2ab2..8c6b8e8 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. @@ -265,6 +488,9 @@ renumbering identifiers other documents cite. | 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 +507,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 +518,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 +537,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 +553,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 +574,73 @@ 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** | **Open, and the only live weakness in code that exists today**: `OQ-S4`, the provisioning access point will start with no passphrase. Few lines to fix, and it should be fixed first | +| 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`.** An access point that starts open is a live default-insecure + state in shipped code. Everything else on these two tables is 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..7a844ba 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 @@ -689,6 +690,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 +903,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 +1011,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 +1167,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 +1196,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: @@ -1150,16 +1287,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 +1304,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 +1399,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 +1415,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 @@ -1231,6 +1432,8 @@ Should `net.ap_pass` have an enforced minimum, or should the access point refuse STATUS: Active COMMENT: >>> [LINK: TH-11] currently has no security goal at all, so this question is the only thing standing against it. + +**Promoted 2026-10-09 from an open question to the one on the critical path.** [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. Of everything the Cyber Resilience Act asks of this project, this is the only item that is a live weakness in code that exists today; the rest is either unbuilt or paperwork. Answering it is a few lines in the WiFi adapter and a bound in the configuration table. <<< RELATIONS: - TYPE: Parent diff --git a/docs/v-model-process.md b/docs/v-model-process.md index c1d40c4..700889a 100644 --- a/docs/v-model-process.md +++ b/docs/v-model-process.md @@ -407,12 +407,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_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/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/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()) From 47279e0e6ab751e18e0ebe709a480183f8cbc26c Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:14:18 +0200 Subject: [PATCH 04/22] feat: a bill of materials, generated from the build rather than written SWR-NFR-28 and the Cyber Resilience Act want a machine-readable SBOM kept for the support period. The question it has to answer under time pressure is "an advisory landed this morning against mbedTLS, did we ship it", and a project that cannot answer it has to assume the worst about every unit it sold. So the one property that matters is that the inventory comes FROM THE BUILD. tools/sbom.py reads build/project_description.json, which names the components that were actually linked, and each component's licence is scanned from the SPDX-License-Identifier tags in its own sources. A curated map in the tool would have been the hand-maintained inventory this exists to avoid, and a component carrying no tag comes out NOASSERTION rather than as a plausible Apache-2.0. CycloneDX 1.6 by default, SPDX 2.3 on request, both from one inventory so they cannot disagree about what shipped. Reproducible: sorted components, a serial derived from the inventory rather than generated, SOURCE_DATE_EPOCH honoured from the tag's commit date, so a diff between two releases shows the product changing rather than the clock. Run against the real ESP-IDF v6.0.1 tree, which found three things no synthetic test would have: ESP-IDF licenses its test_apps under CC0-1.0 and "Unlicense OR CC0-1.0", which made half the components look dual-licensed in a way no shipped byte is. Skipped by pattern now, and what survives is right: FreeRTOS keeps MIT, esp_rom keeps BSD-3-Clause, and wpa_supplicant keeps a CC0 that is genuinely there in fastpbkdf2.c. build_components carries one empty string, which was producing a component called "esp-idf-" with no version and no licence. An SBOM entry for nothing is worse than a missing one, because it looks like data. Two components whose names differ only by an underscore would collapse to one SPDXID and a reader would silently lose one. That is an error now. 148 components on a real build, four of them untagged upstream and pointed at their licence files instead of guessed at. The release workflow publishes both formats as release assets rather than CI artifacts that expire, and generates them inside the IDF container, which is the only place a licence can be read. --- .github/workflows/release.yml | 37 ++ tools/sbom.py | 1161 +++++++++++++++++++++++++++++++++ 2 files changed, 1198 insertions(+) create mode 100755 tools/sbom.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 13ee618..64fb5d1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,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 @@ -69,6 +74,15 @@ jobs: idf.py merge-bin -o build/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 - name: Assemble the artifacts run: | @@ -91,6 +105,11 @@ 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" ( cd dist && sha256sum ./* > SHA256SUMS ) ls -l dist @@ -151,6 +170,24 @@ 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 '## 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 '```' + python3 - <<'PY' +import glob, json +for f in sorted(glob.glob('dist/*.cdx.json')): + d = json.load(open(f)) + c = d['metadata']['component'] + print(f"{c['name']} {c['version']} {len(d['components'])} components") + print(f"serial {d['serialNumber']}") +PY + echo '```' + echo echo '## Changes' echo if [ -n "$prev" ]; 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()) From 58144053817944218963ea45978d7cf4b757bfcf Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:14:32 +0200 Subject: [PATCH 05/22] fix: one ci job that could not find its script, and one that cannot be fixed yet Both red jobs trace to the firmware/controller move, or look like they do. THE ESP32S3 TIDY JOB died with exit 127 on "tools/tidy-target.sh: No such file or directory". The step ran `cd "$GITHUB_WORKSPACE"` first, and that variable is not exported into the IDF container, so `cd ""` quietly succeeded, left the shell in firmware/controller, and the next line looked for the script there. It is `cd ../..` now, relative to the directory the action actually runs in, which does not depend on an environment this container may or may not carry. tools/run-qemu.sh had the same class of bug from the same move and is fixed with it. THE QEMU SMOKE TEST IS NOT FIXED, and this commit does not pretend otherwise. Its log ends at QEMU's own launch banner and carries nothing from the target, so all six assertions fail for one reason and none of those reasons is the firmware. The obvious suspects were output buffering and the missing tty, and both are wrong: the same commands on a developer machine with the same IDF and the same QEMU produce 20 kB of ROM output and telemetry, and still do when the run is killed with SIGKILL and when stdin is /dev/null. Rather than ship a guess dressed up as a fix, the step now reports what the next run needs: which qemu-system-xtensa it found, what version it claims, the exit status of idf.py qemu (previously swallowed by `|| true`, so "exited at once" and "ran three minutes in silence" were indistinguishable), and the byte count of the log. The assertions stay as they are, because a smoke test that is quietly skipped is worse than one that fails loudly. Tasklist C14. The tasklist also loses R10, R11 and R12, which are done: the file's own rule is that an item leaves it when it is finished and the commit that did it is the record. --- .github/workflows/ci.yml | 76 +++++++++++- tasklist.md | 251 +++++++++++++++++++++++++-------------- tools/run-qemu.sh | 5 +- 3 files changed, 240 insertions(+), 92 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0184ba4..a5d9a4f 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 @@ -473,6 +492,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 +511,22 @@ 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 '```' + python3 - <<'PY' +import glob, json +for f in sorted(glob.glob('firmware/controller/build/sbom/*.cdx.json')): + d = json.load(open(f)) + c = d['metadata']['component'] + print(f"{c['name']} {c['version']}: {len(d['components'])} components") + for comp in d['components']: + if not comp.get('licenses'): + print(f" licence unresolved: {comp['name']}") +PY + echo '```' } >> "$GITHUB_STEP_SUMMARY" - uses: actions/upload-artifact@v4 @@ -498,6 +539,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 @@ -529,7 +571,35 @@ jobs: 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 + # + # --------------------------------------------------------------- + # THIS STEP HAS BEEN PRODUCING A LOG WITH NO DEVICE OUTPUT IN IT + # --------------------------------------------------------------- + # Every assertion below then fails for one reason, and none of + # those reasons is the firmware: the log ends at QEMU's own launch + # banner and carries nothing from the target. The same commands on + # a developer machine with the same IDF v6.0.1 and the same QEMU + # produce 20 kB of ROM output and telemetry, under SIGKILL and with + # stdin closed, so neither output buffering nor a missing tty + # explains it: the cause is specific to this container and is not + # yet known. + # + # Rather than ship a guess, this step now reports what the next run + # needs in order to be diagnosed: which binary ran, what it says + # about itself, how the run ended, and how much came back. The + # assertions stay as they are, because a smoke test that is quietly + # skipped is worse than one that fails loudly. + echo "--- qemu: $(command -v qemu-system-xtensa || echo 'NOT ON PATH') ---" + qemu-system-xtensa --version 2>&1 | head -2 || true + # SIGINT rather than SIGKILL so QEMU can exit cleanly, with a KILL + # 15 s later as the backstop. `rc` is captured rather than + # swallowed by `|| true`: "QEMU exited immediately" and "QEMU ran + # for the full three minutes" are different faults and the old form + # could not tell them apart. + rc=0 + timeout --signal=INT --kill-after=15 180 \ + idf.py qemu > qemu.log 2>&1 || rc=$? + echo "--- idf.py qemu exited $rc after $(wc -c < qemu.log) bytes ---" tail -40 qemu.log - name: Assert it booted and started firing diff --git a/tasklist.md b/tasklist.md index 4c51eee..666ddca 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**; the CI job that asserts the same thing gets a log with no device output in it and has never passed (`C14`). | | **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`). | @@ -35,7 +35,7 @@ reused: gaps in the numbering are items that have been closed. | | | Open | |---|---|---| | [A](#a-schematic-and-pcb) | Schematic and PCB | 22 | -| [C](#c-build-test-and-ci-infrastructure) | Build, test and CI | 8 | +| [C](#c-build-test-and-ci-infrastructure) | Build, test and CI | 9 | | [D](#d-documentation-and-open-questions) | Documentation and open questions | 2 | | [F](#f-static-analysis) | Static analysis | 2 | | [G](#g-door-interlock-sr-31) | Door interlock | 3 | @@ -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 | +| [N](#n-security-obligations-and-the-cyber-resilience-act) | Security obligations and the CRA | 5 | | [O](#o-wifi-fr-net) | WiFi | 3 | | [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. @@ -296,6 +297,28 @@ reused: gaps in the numbering are items that have been closed. autotune is enforced; 100 % of safety decision branches (`SWR-TST-19`) is not. Branch coverage was around 83 % when last measured. +- [ ] **C14. The QEMU smoke test gets a log with no device output in it.** The + job has never passed. Its log ends at QEMU's own launch banner and carries + nothing from the target, so all six assertions fail for one reason and none + of those reasons is the firmware. + + **Not reproducible off CI.** The same commands on a developer machine with + ESP-IDF v6.0.1 and the QEMU that `idf_tools` installs produce 20 kB of ROM + output and telemetry, with every assertion's pattern present, and they still + do when the run is killed with `SIGKILL` and when stdin is `/dev/null`. So + neither output buffering nor the missing tty explains it, and both of those + were the obvious suspects. + + The job now prints which `qemu-system-xtensa` it found, what version it + reports, the exit status of `idf.py qemu` (previously swallowed by `|| true`) + and the byte count of the log. The next red run should say which of "QEMU + exited at once" and "QEMU ran for three minutes in silence" is happening, + which is the fork this has been stuck on. + + Worth considering if that does not settle it: run `qemu-system-xtensa` + directly rather than through `idf.py qemu`, so the invocation is the job's + own and its stderr is not somebody else's wrapper. + --- ## D. Documentation and open questions @@ -370,12 +393,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 +577,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 @@ -679,83 +831,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/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 From 3b6b3a5830ddc9fa1b0dbaf6531877b0f1fb10df Mon Sep 17 00:00:00 2001 From: Boernsman <5207214+Boernsman@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:15:33 +0200 Subject: [PATCH 06/22] fix: the dashboard said undefined, and said it twice Taking a screenshot for the README is how these were found, which is the argument for having one. POWER AND ENERGY WERE OUTSIDE THE GRID. index.html gave the two tiles class="tile" and app.css has no .tile rule at all, so they rendered as loose text over the row instead of as the readouts they are. THE HINT UNDER THE CHART READ "undefined-phase, undefined CTs fitted". refreshPower() asked /api/current for `phases`, `channels` and `per_phase`, and the API has never emitted any of them: three-phase went out of scope with OQ-06 and the client kept asking. The API now answers what the interface has to say, because power is the measured current times the configured supply voltage and a reader whose supply is 240 V needs to see which figure produced the kilowatts: "1 CT fitted. Power assumes 230 V AC." One channel is structural rather than configurable, so it is stated rather than counted. TWO NOTICES SAID THE SAME THING ON THE DASHBOARD. The programs notice sat outside section#view-programs, so it rendered under every view. It is inside its section now, which removes it from the dashboard and puts it where it was meant to be. Also: the brand is the product's name rather than KILNCONTROL, operator-facing text carries no em dashes, and no requirement identifiers appear in the interface. SWR-WEB-26 is why the notices exist; it is not something to show somebody firing a kiln. The harness gained --fire. The interface is read-only by design, so a firing cannot be started from a browser and an idle dashboard shows almost nothing of what host/webhost is for; it starts a built-in example through the same kiln_app_start the local display calls, so what the picture shows is a real run of the real logic. The README says so under the screenshot rather than letting it look like a photograph of a kiln. --- README.md | 88 ++++++++++++++++-- docs/images/safe-kiln-control.png | Bin 0 -> 26002 bytes docs/images/web-dashboard.png | Bin 0 -> 106102 bytes .../components/kiln_web/src/api.cpp | 11 ++- firmware/controller/host/webhost/webhost.cpp | 54 +++++++++++ web/app.js | 29 ++++-- web/index.html | 24 ++--- 7 files changed, 179 insertions(+), 27 deletions(-) create mode 100644 docs/images/safe-kiln-control.png create mode 100644 docs/images/web-dashboard.png diff --git a/README.md b/README.md index 05d6a3f..9c52868 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) @@ -23,17 +25,39 @@ An open-source PID controller for electric ceramic and glass kilns, built on the - **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. - **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). +are not embedded in the image, and the **field update path is specified but not +built** (see below). 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. +246 kB (88 % of the OTA slot free), and QEMU boots that image and fires it. | Area | State | |---|---| @@ -45,7 +69,7 @@ clean on host and target, the `esp32s3` image builds with zero warnings at | `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 | +| Firmware update | **Specified, not built.** The device pulls a signed manifest from `update.bitcrushtesting.com`, the local display announces it, and the operator confirms there; the web interface stays read-only and gains no inbound route (SWR-UPD-09 to SWR-UPD-16, `docs/security.md` §6.2) | 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): @@ -93,9 +117,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 +178,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. | diff --git a/docs/images/safe-kiln-control.png b/docs/images/safe-kiln-control.png new file mode 100644 index 0000000000000000000000000000000000000000..e95c4727def324c2e47fb80fef2aa77f13f0a2ed GIT binary patch literal 26002 zcmXt92RzjO|34Mk8Cl7ebT&nqAv0Ood+$T`*~;04xRCHY5zby`9cOQm%^8uAEt@m` zANBix9uMww9$ugK`}KOi#`85k(VFT?WW@J~K_C#Bit-C>5Qsn!xbG$;0Ddd_- zMDEIlo*)nj_4N-P=<^qP;E#Bo+DdYulJED|fG@Y~WnamHK;`iy=a%@ucXBTU1FzR^ zc3!@g9=0GwM|+56X89*;5XhEH<%O({AKupN%LJ2&pw&}PVcW)&8;*5Tw2_>5wd0r> zTPYz5YFbLs8#SEv&9dLEp=(=Lag+w9HS@4birK``_>!$#+ ze+Rk=2$rLzL!#7m#qtHS_6g#h>RtjH32jA!95%sfUDwfu1!}8c_8zgHr6S!1VK@p_fju{$tsOIltvZ)UY68SA%% z*c;%h86Ewct#8RJZ*34th)lVLkV*||ob2rNX@Wq%UW5Y7y{+|eeQ6p58Hu3zw%4Nb z%3-VKt%oO%+Fc=`1x04}6TV!Xg2rT3`8)cFmiAUl_Kz)9eANHa3o2%50ylWwo3Y7` zf0kghm%FZvPn8J~CJqbV^BNiGR}OLnA6hR~=T;22#^>xlp}bZf?F5)-%$OiYHxLvaB*&xezhg?={Lt*Md^neLMchL|FxUw7wol~3H_y}e{h2o z1R9DV-EKNqR1|$~TsKAI(+P7V%0(k)=g=gtGc3PvAO$$9+&v#x>}<#dfUj1IC$&(coP#zWi}Q+-VV?q$DWWnaFn4l3QSMS1#6ZEs$%oOlIez$Q+7DPS2Hf_Pl{jMDlNwt#=Pe&!zd5sYq`R%`k~jII0c zY8L&3fZ;voV1aNtZse;-C$*Nw?eg#@Ys2bjsrL~BnCZ)nNM_M~O{llRBEQCR-ot1| zp=EvZWO=f`^#2nv8Tz6o-N{+%4J9m7q|7*g?S*uHz#`eUI#zwH9mYs4){R}&H(k=# zI+uJYGA!Z*7WhkTKzs`@>id|_>a*ejgZq86gbKX_t5l@uPRyRbnays2KGqO#ZE1M862g9h|rx>uWaqS>}a= zOiR|g1%0#M!=bLG;-#n4dQRMK7QWfUaE9J5nGYFt%>U7S$!`X3;OI-b8at@$Vrvv< zmK4Ht8Ail9`UOh=T7<4m$F)B_9r1Giac>rnZJvFOEkpP}edOi4-g4PcwWqPuud|FQ z?bgEg+^{>-B)k>tu>}RKL%FB4^^-=urrEuv*6OgxFQRY4Ul_s-*w!V zKD2jR4h!Gdc|0YW&R#AHE9~vYjPw8IuKJ+eF*rc<%}O55FN1s7gHhcZRJjgaAdrEb zjs@WN>PpZRX?hl^40lCcly%CPl0D$`9@9EF^VKVVPr+}OWp2g;2nakfJy&Q)FKwUF z>@RWI=CxKei&B}OrAP!T(rEd4xxd$NlmE(0R?k|h6zGN1s}{)73;!YTO7A<`CxTq% zy8ZRDpu%ukVDA>`F9lrki@hhlsRV3gnegPd>uPgPi1*&QXPB$_k$`nsm4q(XW?oR{ z;YT^Yg$Nf4(|^kv{Z-}`H?u3vi@y1wd`{uAch%Hao+AGlV;5$YeY8-;$-^kyki+Q$S7Nb{uY&Y|RsmPht!pK@rstAU9-g9}hLPkp zx5SN!vPA?2i1)mW^ICx&5rpK?-23*iRc1EJdx3xCRekp_>I#y-^m9IHL? z9a0zCQW&19Ucrhm(Os~!QjSXWgM2g5?QD0JwFUEXVdY4UrEC{t(d%zJwf-&7Z)X8; zQRJO0Ga?72p^8RZ?%Eloe$rH>c}qlX!ktk|(Iz2PIHOFQQi|?VKG!B05mu$P{7YMg zyf$Zx4wVh=v=GFrjfc4?U8|GgtcqS@nIY~=iRv-N>4y8c=bf6W@M)#AoEMj`sBo42 zO@E0kytTscK+VM1FZgsRW;4n%gRuf87Hllhh2P3<)>Sj2rT!53rpwN`y8EtG3>(s` zSRTRBvJ#hMVdn6b-T(2RwX1W~0L^A6Q$NVoi)T|%lnEW()@4x^zK z_+6F)ugR|9%jrMf4>7fo_50tMe}w_M%d@^-$LIa)@D8L}-bgC(A&HM>&7P4Gbc`;T zl5d@#!V>qZ6j+*h#pn$oS7i z)$1vgIr;z7>~&_!9UBDz4lyL}JQ`4i?lJ{hBO1B8G5_LD=zlkEf5nkk@4i0TP-Cs*`e=0SQ4G(gNN zN;Q`Z;30X$*}NO+@~}g8#_IF!yGC`Eb1Ub2hdK?28J}$hGj&UXw|T1*xvcWI_sAtB zDt3Tl;L>~!z@ld2#Fp7~v27c?i17|Rjg@)1gaxF~=1*7nZ6NaOXFok=FDz4jDRogt z*Q;Y@^GNB40rK@Pd9%-T&@CbqsSUvX=L#U3ZjIfWBp6t-6d%)iF$v$dWH15CrFVWH zMeTeIScOVrG5z$PUv2Ipy_R`+IGuJ7!s`+5P)TAEL#@=C`HC_6Z?I9$9kJ!X-tJaX z%ngnyy^Mtt5t#=n$>|^eckG~;Ye!*#rycZWYer9cgT0)FO0;aKWO<}r&zuu_2y>=` zlW%;2()(~l6g0Ve-(Ay(x`Ex)eWyQzaV0D^el!e!_YY#eHe9{tjlnq&^VA_(+!!VQ z5VwwA4xW-8M5yPXS3?Y`Y0*q~8(Bz6g!bI7>z18${`u-ZTA$Wy7Cy}Y0eFNsPKEit z+IiTl>Xdt{+tuTq$Uu#iaHimw+^3g14NyAON2SHdGPPL7sSM7ez<=}-h-=Mxz$GG3 zg043tq#6!^S8O5rCywL;#^|ZE^Euu4a@Xs80eubqW4xdwR4MIbRH%-ruFWZGBvYWBQdFd&_aZlvp`W-bsmudasn z{?&FOQ~x(286iS{v~TUFIiKbZTL#@t z;M>56c+~z+U~r0So^3>J+>dz}QQkUG!J1*a2nC-@uTEHo#)4dwW2UOws}5L(Cn9z$ z_u$AWmh+9LkhTxO?X`bNKz;-OAwnN`p2Eluf835PZW5%qyRt903Ava^&Nq9fX)mma-J(>_!eH1`*L1?@q1SvT zHu$(YAN@g)vFz1NiK0_eTV{J1XNqSeYkM*{`oS-6&`7?y`P$hgnPb*MhuOk^$9 zw3W{M-8snN?cXOf>;aj@MrX!(VSBn|B0kkr^R~y!{PyqFf^ceT5o!($r*Rshaf%kY zYq`!l1KQyo;(kGQ_aE*J{UnV5P!)Gt%Pfi}neMSo-UFXZ1xxyxaUWLSd+yx&VGDP* zQ7K>hK|AMr7sJF`S4q|Hv;P4MQ26ufERf@{Ga5VfaPB_IYX-KNP}lux{%}g_ zt}+hh8}HPG9IxczfgsB_4(M;0`jAU!@^Nv;pvfxy)51c+9bdWXQu8r zx*7Ni{Z_`L+tL|MOSA+nJ`Kt3~8&=RX)XO-OF{x?gWN&e|En0PQbi+Qv?g{5M8 z*Xrm?v5_u+2Lx&87*|V2H3nBE7|^Pxe!>=^4NGX%)mwU34;TAlOcUwDv)oEf#CeXl zP*BCnQMjnNBDv!AceT*xgo27IC-EhP95R7o8TLXixQ0%~CS)X{U{_xUn+m6&N|V@S zp3be_1(9}y1RRa?N_2m-e`zN8$LIwSwP-EiX~{Q4TVMrMf(sGzuDy38)cg>tmBRhc z-8`9>@&6az5bh4A%E~;PX_W3KAq}FFyH*bB7%!fnndzrT=kJ+rXWo21QId&OZsJd$QhkHWjlHv^U)(FxzB{6@_N> zIf6ppur<>^b!2#;OP8+%7LXgbooEQ0H0X?Lq2rT|xr10iHoac0U>ho?VxQk+Spi|2 zES&WaHuRMuZfR9Zv{rD!MUK2RR!CxhgUtJA{TuPtTIn3MP1tiPC#|mbO#K?G zR@(2tH9{R~j!V|^Y5zP(mfYWXg)=&qkL4O}_Bg^N-T?$9TC&l_F^(&JXO8ZRcp}u{ z&%bjp9nE%x5=~aXZW`=3`&z$kv6TSbXzLVlX;!~Dpj}XqhuE8+^qbsa&?E;1)dnqF zdtZYw?f_a*H7`W*YfBVt5Bq$1E5nYh?XgTvI74tXtamW|!ubBumXqMes_xcX4Bwv6 zOm&>}d{5te5lL$mrsne@>wKdSPRE&rtHBtr1u9L98w+@R>iO<7hC};Uzhp|AjTrh6 zbb&VpZ*hp7ucfa?i&fBZrB2Md-1v?IW1LtKPj> zd9H55Rv+6@o{?I%vLxVEP42YvXx_K3)C2QCXJawA&%0|<`b18^U2p2!8~JDc|R+2TDf0i$QU)(u^ELi;L_$?|PrJiJ6-z z-vJSHwm0#tB6Vt6?!8GVuX}IgjJ=_9OkH;X>g$AlK8`hB0}feN525>hDSl4*TfS^3 z>=Z6x+T=>7!jq~RmT}G}ab6uD5d=v&EPqdJ$M`UIn#!Rom^9+-vJfefXx5-{zTrxX zwr->&f&9Sr(aQ!iu0SEJvP2?F7bcsS3$ z(+WXiR~Uxh26L|vE&raB`5xJ=XGZ%U>`#$T z&qc;aIIW1=x*rBqcAV9e1g2(kksLd_eOMi^?LN|K`ZZ{-KNz^<>7=&gJ7d3b9nf`o zZ#TV(pZ0XaFu0sPxfRa!uAvlNpB9Nf)gK+rk59g~8coJiMaO@)kT*s|xC$slPO);7 z(=Y;20SMw9KevCxR*&ra^?Cf+!T5aL`%oTEr*x$2mO`=NFfT4KyLljBN9!whz*)K{ zIS*+mcN^wcnU*JglV|Rl#H-e=^n3l52%}{bpY)PwPvZ12?V|(ATvJ~6NR#^|9)=B& ztca%n=G$FKK3EgE^s_giQMppq{Tz9@y2&oTB92TFx>(87F_+J$<@j?DO;<>y)3UCq zsa`^yEnAS5_g1RhPim;GE**`!f%+}_o1;E>X0+Y_ei>Q+d5IehbDK+wpoO0=Y|oqF zy51Z9_a{*tH|;j^oWm>q8^w|+tOPJTsStUoi`m;qnarE43mu*zM>r>ji=QEv`i@U; z^NJKSo%nI6RKAOTPff)rovPXPy-YJ20JAT{V0$apODQ(SYRfWtjrGK@2M~=L-sY5M zyzdMoq#(57A2Q8rF7oLL7|o*SkEagKir;2jI#rBwu@Dr19UGdb>0UzxKXnkvbSHdr zh1_5>97_IL7Kv`=j4jrFbhKB)OnPs+$XjROE||5*BfxiBT1BFsty-GMHcw%Re|iVT zh0Pio^la1lq9%^*)tbOWDPRg50htVJN zfTCVS_?Tw|si7%au1s*ccU7S+Fr527f0eU%6@0R>5h2qKqRim}E{m8k{5PvUk>R`Y}F-z;Y4kFFA|@)+4y{ zqxsxm`LKF~vfX-3)_g*J5LP~CzAt%&3%SCzfXDi6J0}U!!j|MNS9+Zr`Cb#zI<|oYoXqvseaSb!$D6L#^uOi6F(vt@vjO3Dg4EQ<v3TJg z;TT6P&X(9)3|%32gY&);*9ALbbm3L3A2qYpAM`|zYye0@{LLTOd$g4toxL_t-pXNb zd+gY!{&Exg(5!6XHZ$rX8La2Py<@L?l&im-n8j)tq1WGJz%JzD|9Lww6YXB;;m0=d zW^w+a1nEpDl{d9ks?Jp`38VZKWmD&dHD;QHOQVEnDbo3~dxBDq-muX!_SGoS zGWB_S;FPZS6rjzhKzk=SSRm;51>NArV2faj!cmZjfPBDKHk$UeN(EopP=BMr zy>dX1Rl>ay5trYFp|T)ax?Djcxp+9#3| zsWh>Q(t@xKS{u52QBuESxW?MDeiWMN=UDd*&{CNqbY5 z!h%$J#BxfWP$1$z^#?FXGhvn&%44b-T^GOa*sJ`x#tKog1it3}Z`w$B_KviA?+8>) zu&buX#pDbLJ7IrrpQC$8apTA#uHN2NSI$$YX@Xo-IjPmwf#jt{Ba=gAtu~C8zF%Uv z3dyD;Q#N9r@oc(uKu!z3daBtPJ2Xb23x;QQ(=E!GyD^owl9a#pvkXUHvC;ZAY}zs} z)_+G8xjOAnf1qi7$;xE?;d#+fK&+V?(D)@{{Vd&O4WpwP<((c^N&id{g6V%-h^BK~ zcd1%+6~j|3avCqcEvQjNiu#~D%~K)i!#T|u3(mbVG6wBKGIy;C z+Qq4=*4b4u6tENvu-^@`@I;b=)z4;At?P3`=qL%2lP*$j<*s)-@JiIkq#M^q_6XdZ8 zd<*-!bR4T+id^4hfHFtSj8_x!;DWEl#!nM#n(xU;{Gd2Pu6wMK_=a?eN8O+0Xr@o7 zDH)vyc}rCVMCGt&s~;-VIoS?MQF}XFG3!R^1QyM2`aEQA_5kWYJ%s}3)4OIJ;YWqs z=w^1t-+W$<$~Ak_YS2mn9cI_1t(+>~dNEfH8PkR^#=kCLomZzvYeJV6^6Cz5e4ztm z7Yt~&d3we)a&TXoM=srerLi|(~Y=aZfF)SgE}^BjJOEtHf~7==5^+A z_zBe{P3t~=&h$H=NiEI^o{D{IfSE^beUWSWJ~)xjCBz1a+r_1I9gX_CQS1pN%-bj7 z9)};BLpuEUBgs>Js5h!7p}2g;i>5qM=&sttSR=i_jW|5R5X>cutYM(Jw|61iif-{{ z>6D_=#Y)%u$^HZlD17f|-W548{Bzsu2J8sTMOC_-#II+kMqHeO29qscPTI@lLAVx> zJbR`4$oPZLNvAXn^q3}Jf14ku_3x@tyK?QscaY2%;K{Yp(pO_j@KtCAtp%co5tYkE$TMu?k{kc)*4-|8kz1)3i%~Dy}i;;q3RH_Y@Grf0MDt6MI z(M>&yPLBslt0U3Qbj$phK*Q7i*z*7zy1s(JjzGgIIDQj2r_?*2sZ}J==U}}m%Q6qM zb|~sx?CI0IFYw)DR!3>PwT1)U8(U8TXN!+3IrEFS$8ExO+^Bx2Lb~Ud*>oO;ER3H> z;l20d;zEDwTc?rE`)b1bh4}px{@alztVRCj>L#_Or#nHWuij1%;VCBJM8n@bnx>a~ z;%qEL-uZj)h|&26(jVtoIOQFy9Y>8vptyAszYZh3+}##VgK0(TSSsVdAcu{tOJVG% zoR)VoxYqBLyY?0?Zq!fyynXM;Z1Y>?4S7VGrRDb&&W?4GTzKQ$W>IuDbkrlJIu+xP zr_>sYj715DiY>|66!~!I(!H2mbK4GV>*xhb90&1=w{PAK*^NCk7csp}KP(O&|M4kE zFY9EzN$)IG!1{5JsXpURrqx4lQ6p9+drCh;|LqC3!PT$M1FJ7K?FeOa6SfRyA%^BV z7&(Rj5ViA<5JLjL38==w_*Pj+7m=VQK3-?2|Ssh4LBIQHgz zZNrh^&R3bZ%A3R%-rYmn$NYiG5!BHvCi#JvFb~;x>5&UC`Z>qt^*CONp5XERrfyEy z589QzWc~8Qj1;Ok+tDudcwQqtG6CQa$MDd)q=;EUB~w)Gb_7Y0Zg5Gw9?`H5r`}6A zSF8aW9T}}urUxeeLjD59qf2V5^?DRSh8k}Jxqa`?GJ_v|S8t|Q-pChiYgm1Dp5d=cuN@{!LlF8c$9uGcu0m{tD^9RKbgT8bD;%H1 zqp83=DDkog6{g_x8C5CRZ>zEQv(==8gx^FbkyB+(JZ9I5;jny!W6J}1)R3~9?P|WE z5HaK${*^!7x#C2>`iZ)JESDlGlqJ}`+Mzz54t2x&xNHCS>2Wrnlk~+{z^JB<=})om zm-U#?vYxk2aEMa|arN}X;CbwH*vsyT+3fj36a6?^sFkv8ZvK7)Q){-Tagcr`YOLzP zGP@}z^QFfP{_8Iy9U$<>lmcJ*tf$ zXfQlzU|RR#@0?!{FU?}(6|WHrcN#}o&0dzwza;&N zMyhcku#>OLQCvAbSJbpH=ji72QzTB%S5q)1 zh7G_Bn?-uF3o+Fr^UH6&;aGt&k@8W9=W76D9+G?Z;|Cg|-RdpwJ86{;Dh!AoUn%A^ zVZB$Fb)Z2~Ol8HHr9DRly&F8^M~}uOqYbu}7RjcIFHa&$~d zLNWRmXgRr@UxO13QlQa<~4FG-TliHP9l z>hvA4y%8#;z$Zif*i$Za{`kX-r1f?T&Xnfmyb`8!dM#x0($$DoXLe2IAh#iVD_oQz z2CY1C)7_f?=T69p2(myEuQMBeELHyJo!~$GW1}6)e8ouV65W-)?xU6GvGae}y>GUH zOG^#Ho})S9f4OK_AI_BSpG3Ig)ncu^SDetNU-rZuDh*h^-jKhP)+;7l$63UnA~Xl4 zJ11|_o6pO}Nv_Jf#-{6OS{-^(Ph<-}JHx0@uvM~V2CjcBemr@+tWkj5E|7UGpZbh) zZ)a}M7du!=Tvw`ns5zE7^~?Qd`WSAp_m}?hF>5h;oq)wOK@~1d@LoogWRW~j#5H92 zS7nz8*zSydtMd#U9ETm7K#i`{KZ_A`X0rVlURBS2!CMZeLy_rZZzgON^x7M%RY8Q{ zrbgPSL0Zg1Tb#XQho4HRjFgH)`F;Ftx>m3PS1*@$7nj|n@~sNQNf0IC68?o{BW|>% z%k%X&;|ilFExcyM0;9H)>hJvwT5R2Ns1&flD;-$u^3NfTL#6~YEqdy1=kd-R%@X7} zk>nZdLp#TBaOn+Rh{x{~ygVd$wG-T!HFsDpUXLoVauiwR8sC^P@qw=nPR3uxQ!@K7 zG`D|V9`nZUq?rDlQGeexo&Ah3Oz^r!!V#OTWW@V4FBaz(Db?ycuP-fyJ4yCmoDbBK zk~W?+e@rNWdi}&+y<5(I7G`&vCXN@OWBKK5ZNNxYg)V16FGJ55(cOG7iPu@4S!hQ7 zeVYT1;4@I1OS!V+*qVI&sQQCyTLfnhW_<0x?X59}sUi|;C!4mq#yh10I^(px109;M zKB0Mi80*cx!orNqyx^mBRf+Wq`r}^@Lj;`GPAL4<vF$D_w)bZ+c}J2T>*YJ}ioRV> zQN7>rb$Jr*NNsCxm>LrsNc~s{D3FLTwgF=g(d7^W--3(e-g>zQs&Fe}krrbt{mniI z-?UW|HcZ+-xN-OfYO_pvSz&W-K%U;KmRMe3;6~w<31RX2jz{q#Xoo-JWEn#9G9CZC z#x>G#6uU)uG(?hbi!(;)#XxO*XmokT+J7a|@+^z$+%Y*z7x3iLmiT6%bVZI>4elQI z-aGcM*&67H!q%a-zK+Yp8HSbD`q#xCn+tUiTYRz%^_}>xcotw(jeL2j7cQx3>);6y zbkVUOO{iiQ7a<{vPz6&j{pzmVL2^{OKmYJzC+5~8ZCmXzYBC;0PG#}OBtq-=m))3C z5crxvYZ56?l7aQ$%Sa~SQu7nia(!CEqO3Lobm&Qhl5rGv1QGlu>TkGf7X~N0T?rsx z^*W}y8`~bBpH`s!%3simHxLTEn14sEznuSa-!B!mNq=m3cA#%qB!m4Gx&XCefzR0e z@t(iP(iyzK9`R}V7J{OusLiV`OgqnKd9`iBurjU3(NPf5r9)lYhVj+FwDRiEwT9K; z-{ao5F@DF}rH4_nw%7@1(W<&``Fu!+UhW<;y2R-A7?IqZ!>d*{118a7;N>; zJ{ZV4)CTW-*O%pYqr!J~Do$nHh+7QTr3`ULKJPuRMzWQbi-9(p)2VvQ&9pvX#Kz(w z<|Nh_1(sW0fFY_Gi?(i)8zwB=h*k-n3uIMf4qmcUUXz@1A=`QqTQOlLq3rlNJ1m#3 z()Z+#*j(vdGeX0vfQ|94uVjMjn`MC8-Ej)_g=buPkl>$6cFO6E&D&Pvwar$`O9ef0 zDRnT%9?|UW3kOPl8=*9cVSr5AGXw$U9@^TA`BEYc>w%VhVbaD4;_vKl-}%Awxq^}2X|v*s>Sv!E%|_BF(85OrsorD6-H z7CMoRF!xry*AC8&=mkHikXf8IGdt4#csXbi|K;JIlD02hI$;!MMG-)Zt;lC#Z{)jg<8&UyJ<~B?+Uqd2W zk1vek4=)ROuEEojqhl*YfNhP-LtPr;F*=90#BpICX%)4{c9&Spkz>LI0>bS^cGl?g z8IB)diVxDpZne-T?2nv`i9bNgSmrh;qUuBa-ugHFH;I02sG8dhz=Vm%J}>d=1plUB zagNucpJkRX^I*$&A2TXqo-vu7r=V!qfv>=2IKpc8e4pmZTPwdRk!Gq;MG~Ek|8x!t4FY#%Z zT@4_;9Vw`hUDD)QdQ0lnCI8M6(7tSNM+hkzScm(mcg&D)H3rmg99s{#G6Yb_9G%iF z;!3O2!@yW9%lX0ud~n`gH)Uo*ldU4{-R)7J25O-#EBK8-)w6U1uc?u$5Ubz{m^<3?<4#uR`fX{HN@ zhk&t@+)Yw4>bI$V>B=7yYw_lSHRU$)$L>1k<*iX>R;0S`wQfzdc1wXju^oIdgJoRq zQD}{fKODawH@h7I(Z|Qlx;Q!$Uea$@j(o(b*OTs-IL$q8I=kcz= zJM*yv1Q>IYoud|+m#cGcD@CUQ^$WG<3;JG@NK$Gez!;KKm6Sxi*R^LvwS$hom;t5_ z4O6dD=*O?g>)j7zpnVmGg6LXF$n36Dr*%;GWp|{3#~$s|ezMY|$S|j%(lNX%aQidj z%liW{-s$sL<%Nv%?fLqPAE-Ny%O|6Q!Cy1aOEKiMWZdQ`r9z`GaBg3>Jtg#XchHcS`=P8Y9W3YOJGaOLY|@9jc0GA-Ta{8KaGZwh zW?jPl&m@lX7M^b!QbT&SlJL*p-EJjYF2G772Y|e|;M>!quN&1!K^xl6k@;dXazYE} z#ri`QzcETfdbS@eI&N7(2%Q4Hhda0^u`1D)yt@I z@Y(j2Wc>Z|y8H*4ujL)YDu^X6B=E&6%BX%t%_yW8LPC9gCB7F*Us?U$sxm)&R)HM_85-(m+I(_L?v`$Z% zJq)%htOXBdNrT_Wee5lww}SBWTItE_)~L$wHHzN{!dYc+2ywn~~1g3~#~+7CwM z@a1L(a6m-wZ$^ZzBi3dvh1#@UxKioa|qt8igr@y*rB1 zRs%Qj1j&cRoqj2P)K&27PXT72fSE!3d-Xb&3xoa26(cUoFviKPnk3ayj`w_35QbbL z0X_BWhNimtC97(vP`D3=waj`&ulkj`MD~={k`RlTwi2Fzo*q>8pS{n zPM8gdLuqF^NUWhJkiqvXFB_j;qM+hc@oR*he%y1`74}_^KtV`~*dZ2V9c~k51{Q8V z8<22}dgFsK;3wI)LtxhWuU7h$di`( zb2x}>%-UJ`O)&rKiYwUNliLEOK^?H22DT6bhE(%khEyh21Ece@Gr>bY2T|PNRNtuN z3%B+KRkskyd+(yv5XADWG3~hfJht5uQre&R+tBhGoqd>!Sb>Ahm2y!$am5Yv7K@m!dw#i3&BPuc|eRL|<`jW**OoV}G5KP@6=EqVVQ~ zdUi}MX$9_$OKJ4$xyYAR86Diehu!=nd?VG5b|90R5i6?jmIPYLg{49AQxFg4Bqkkc zS6Hy@DTh$UD7&+=y%-T(I(S)QG|ykRUC&qP1Ek$GG`fr{_%|=K90(kKUwa5Mk{J5fTf7McV94-x(Ry>r?(4#H)Ig1pQr7Qy9TnCYf`Kg72&C4!>(Uge^bjLSvjo5g$QxTM^{Ox~i$1?&+ zTUES*s8cM}e)Z+##n$mx9O*}E-4L&8Ry7c{#_TbNJ%NeJq6iILB*w?hURTtB=@$KD z=N$#L2BbC6i1zNePx$)Lu+D7rLbKTR)Dywq{=re<&#(K_#LZ5Lh}k`%KSoNY@Vmh@ zFd|+xR-vAEk&jcAF&LCmsn-}VATXl`9 zW7P$aa((?p`CKgQgi+`CqMIHpxKwuvv~Z$+-uOXbVWI!cbS$V+Q{ISujBO!O$5WYg zIQ$$P&gy-CCS>Qse4)fkj&SS2dF9AZu^>`VTvC6Npr^oaGuxk55?cZ{9)YS|W9bJl zAMIX=c$rD#fSZk5hxt~{U}K0SS0paa(v~zRPswN3_p|fRiz573qsAD0i@cB@lnvJt zK-28Jk3GFSPfxX%p-sFHQsn)G`I=+Y;zcphAMxLw%_pZI%jPg8X=>XyUURm31>8|} z`Qj+%bNTJM9f?1E#*T*y*e*7`P|C$;-qIeaRr&tOM=!D7Knm&f5ZspEa48jsK)!VS z)k9J>;&o4A#qa(C!8E3+EES{tVRHmnvJ_CkY;Y=q$9}{~jmd+BU zT@y4qG7q)r+IfyZknYW(D||SvJ}45urNsuDS%{u+%{e1?j>8I8Wn3x%7{zyQFa`Vq zS>>|k-@^7ymnCZI=(0;19H8Z#4W_Zuz0qnwb89)YZ17ar+T_-U^4~n3Axol>!CxZL zlk|(HOqH;e>{ZR8WAk#mnq)G>=jvjh-=``aSCUeoSfoRAWknEf|58N!4Ct*nXTB&R{si8C z^;u9?>Gn+)K0fR)Dn!J3Ak_hP{z2->>P_xg?f*C=n;P#txj6n~#%{;hs1Q>5`DsvE zwLp6dDX9($>%N(xOp?oGP%9f`2zCiuwkjFrMRMd)WcYD1tRlrBLRL3eju$0!R ziCj}LG^|A>()X%rdv_b>b8g0R4d0&|26(>S!l{ZW-3R^t1f($Maz`t};Uv_h&Pn5j z|5-%3r9^mWz`@}RN1oMSvrM; zB!J62xTfD4i;?Ww^YEVOn1)7q=j0L@_5*`+xoJ$Z0^;p^zfE6{B}=-7>?ZMm!>!Fj zEWGd{?z6G%=Wi;Mj#OgEPtQJX5X(3ZhDhlacgE<_+!YCrXY&~h@@)6&#)wq7uie)3 z?t#So@%0^inC`aP-ZK>tV}O*5v_jMUt~e{%0ZPQ*6`ia{z3~-`ko;E{QyxLXJ7%bPZ(mJJx>3lJa#-pw@=H-fz=iVDxq?u=6+Y$z~Wu?vZA%uD;q{ zrUtdZWU7CqAdnS81Hc&ZHuvJMd%YwpW<}^p2`M|a2gwvS6(WaRImgvQ^pz@#@m;z& zYo3i;!HA528N~)kr)m-i?U9@wVTV&&WjYGeHIgE&S>C;2^3qHN#HFdS>NwAwta!^}xF@6FU#A z^u5yt<>v(=pd18XLCrKBiqY!h{lj>lLhSZhn#}3Uhj|f^r#>W4KO5n?$f_@c55K<3 zp;}7Y2~yvxi=3e_;L;9a!;6?2sJK}NPqR%7Dt?IwHxCmkU!6F5ygY#34e2zA55G&D zl`(yaGC6jhn+9Va}S z7AY4^u>rmfUn8weeYz){i$oAd0#*^HD2MT z{=f`2R9>4OrNw_0)nXf%XHBImRzXQV8VxXNDq8e?$D{V+tMkv|N9TvVt0_>{F8kFK zikr=QCmoeFF}jqeYs>3|SY}n4RpS#x=i@6yS|?6uhr%PmKf&WmcNL}vDb4{>G)DtQw{07OBdN+}G#>%&7879#x2e2S( zT98<2rysl9sYfBdw(DhtNhDjD`ELGaE?gVnDW%eOLq@5rIC~gLv_-a}P7J)%yi|Na zs|~)x1E}@3M{L#-m6!yF&_j!5@A47quUUVlXp8C2q!(Rje9ksd_x#w0e|%p-=|MB& z%g40h`aX4mN1bhcY-A67`C#w?qvh6V#w2{p`va6vw1 z%roTD%6d{%J9}+|Ly>jV4#xnTCmj5P9>_IKBxM+Z#7%5Nl+G=r$m;i5XCOhxkeJlYCTYQ?VfVDiEemyomPd+b|6#bC2Yegr~5x_8#DFDH4m-0hPxD2 z{Pw2YXsU7Ip?;%P*-Nnmo-p@K6xNf-@uEC&st)^A9z0>~j0d>vOZ4jbWn^28l571W z{jcMBWG}B3E*~trOmAP4+);mFdhtq9WDh7l0ZdzkH$YZ5K(@E&4V2|zd6x%Fy85#n z7xgsEu@Sz$0CwKcx4eI0*$AcvwRydvHFKF$9wsIt65uiucu38!)+lIgWoM9+xB8l2 zZCT--nS*hzC0K;(6!r=|{<>o^hWBX?=h0nO0B~3zyUF;Me3uLdS7cnB!AVU?#Z7Ez zR?HtiBYr%d`1PRxudDBnQr~Tk&YhBh8^PTuaIC8mOPjhcM=`I}|21*m;Z*vdkw`FOq_kNf>r9bZ_Hf5)N9@uj(e4+i@@pm;fDYWT-%hjrhhtX})eXSKCm z4vuW%hyXu-h;@hI?fjePZ%hY=LBijhjZ>xn~ zuuiv;_)R$V_$&FRYn{?e7%g6_y~PNd1;d!JK;qfa)RZs;9I!Y>WUES{=EJwCWp6f1 zWVowej#7*e)vw47|I=TV`v4K5ajCr^YtnF8su8yNbyp+zGuyFVi^t9P-`&@Z0{1#H zgFiNz+B(%bzNZdfxL|CW1mgf9eznX+Hs(4e)fm7#jr3=y(t>hnYr2){85!~EFoVl{ z+!kYJuxIKH!nhDU!dFriAV-k#{H5}|ctnNPrj@HVYxHPq(kc*ybH_?1V7>D!)znyDzSoESybl-!V$`I{D}cfv~XG zv;qj}i_DZrlc62OReb+1W2`lrEV3mVyV-nu{`gKY_+s2Ok>M*-VTWgr_Rna}$_^vX zHc}4v!b4z582b z0;@cX_tQfGf{^F4Jx$5P=nMbHpw%dSg-`Fl$4LuC zOhzxu*-oa2c@f}s5Nd7kLmimf8ybIFc*<>3&E(oV%wA}XOadlpKtVBHo|>X#c@LyK!CG3bTcN>bY0GH$T5JRr2MT>e!G(;dQQe1(tK0{*i^zX0xKH9tro^ z<0!XNKud4dcc(}_i;0C!rssJrerE#ujq3Ii8a_|vhI^IV?D=`L+NyPKiHZVh$UVKG zyEu*U#}uoiA%v?cjZ4&zx{%g+1+zF^r=OR)58a)S)ktz!)8JO_;ZM6WK^hZ4NYe|s zw}Eq&nTkp7EbEt4o8PDReNd#CYp__uXI%80I&9Mm`e#APNJEFO(m`$=NSW!)EsT!6 zSWWBMmNi*^m(e~h2~_DEyeJOIt(+Q}8sy#@*~^{`KRuE}*RJbKK5QrFn}a>tZF+$r zJu>sBc0aDfd^xe{SEr#ib@&r!-`g|+ebPjj9! z;~IuptP^hi)b72sOMHPYlHvkA2vvT=>6@=sbT=-Ga&5Bibh9Q~$z5t0Tl37&%LH!g zY>x==T*uU?qJ&7Tj`| zftG;o*771{)tBx&&l8`GD9E4c&uxF@sG_prV=~-@vjZXsOAE~#Uw&r|(p+VT-KAj5 zjclxz6z8$Bo5oAsE*->{H4Fge!XY)SdhjDWTTe!iV1fS(b~_CVr|+;aB({;&T#;h+ z5A!hC1!$%jw@i;{z}rTvh%(wgcQQB-62GzPNUc_UAnS<)Kck0l=I+v`}M zHp_ntD3MjK3&nqVKCZOv?z4I2C!%4x&FN50yZX!Sg*;)g<1*8%w`d#Y8~6h0^QZHA zVPzvqVH5TvzGKirnTGGP8ppJh+oWp0vQD>Z13-c3=h(i60a)Eka}7GmS6p-utZxG# zQ{Ltbyyc_0-2+4ULULA2XTfPX#34O7Eu!9D3q4h>x>V~07HlxHdo>mw#uFOFy?yi4 z;)h96o-4(+G47%rZjAo@nx7)xAnLfuG_>Ta-{Fx$OQ}Qt(0wf<_a~#0kCz=2e2Z0^ z%;Z)aSxyN1$2s>YR*WUgA5%7E6dhV9JPniUzVIK^LY>hueZsJ2WZSR4BxqHoFxcz>xZ_L9lBU4uAfMh@%1)?g%GzZ6U-aJV$u!HuT*Yk3+#(qnF8?Gu``v0W1DD=4JV{)0 zJ$0&6E^|)lK%WGEFJD+@S%vOIuNU%U2CH0P`1s1)XLC8kr*@0fn_@MzE=9k=r=g%Q z?XgTR<+hNCnbQr{$!V{-=htb?xHQp~baoy1-vt(@!mAES>mXq!Ui@eejcsw~iBa#R z531BX;D&iY5#zDnH02;(b;ZDH5`ub1r&lImD`PJ1jlq0*-SWh*a}+Kh-wo{uvXOLe zw&_d$Gb$k~1sev$DLq7pSswAch!kHWRGu{vv%>UtboI4g-;HpI5+j|!*O4h2}T23~P@bYrq<_dxn_Oe2?r*Wa%F*_Zv|sTUT` z?%iTF`HV%WvE1}CgKO~Phpsmd2d!J%TDiBOAhrvn7RVIc{*$qFslqsEV56fr(V5rw zhnz{Rm9p4rTml@HGQeUWT^gidUdo}tjOdy(MwvRJS9!_9Kkcie@`-Pi@!$b%VWYG) z)9k8sZN2P%a#5$oRyN57vA-S#g#B5t2Mfok0&nJv_gMHp2Q3W;8uM0=ge}I>^q<%y zcZ#UU6q(5_E-+$`DY66@PNr$rX=>^MrM=^gs6_!yrFNE-DA-sviPK=No?h%T65ZkZ z9d-~X5F0I4CG$nZv%ZvA94m~eUY;!9mfql#FXVQ!zRJz1 zNJ8_Yh-<%2vSmA!`pu9nw;P*EM@lg4^~eg!cCZf!+5y)%@oyM?tN=;3s|tCdk&HB_Ty~BHIfV`6LUjtPY$T& z2FdL&Ls~u_8@3JCWO;K!sPeFTg9uFR5{PR63{spWSdfSSfXu;>3so^^LkM!WW0>0^ z3syiva1RafEYO@}>Nauy&>x6?IG=u9ZdIFVMzz4C;HU1x>f=n9ZxY3Q>~p$&@P;C)IFALi@%SV|mV& z%ZB1PJ(msETB=$s{Hs>H`b>YwM-{qUKDckqHFB*g6cGFH+w`A2t(7uKPv;)i-jaR1 z{q{~0giveSkkZ^Yr*UfL$MgYWls@WEtknZ_j8_ID4CEKawcY`S4=WceUH45;baTJu zFVPo3`!ya=eGHnD1NJ&LwzKu`ug;EIOobKpHJHFSI`^gFUf zUG`K(aU$&SrZ7Jx?1op56e@$&o%04>mqfLnGFxxs04ZQmb#F;*_NOg<35kP{8R8bj zflmD5x`kxakdZ zq5QrMknM_`{$*jwZpZ=A7L`Gr?WJWS?rTYq4FhsY@EXhNQL~F_8D3|=UsXas+6WqR zLKCfUOY>&@!2GqMXJA84JN$LIr0}M_c)&k1%?Um2eYLX0f1{!o<&wx`tb1y>kDPpNo($zzL|B|?AOPiCQoE{2X%IL0tu^J7cM*c zfvv0n`$}~zU#+)c>Gig#YeOuEU;_Bj0gUJO3i;{@W>WGiwkEEdLU>Ep@N+4mVu-fr z)pyLZ_y4NE?DPVTyT*G|_b?)}I5n76ZmyweWa@IlXnD`5^t)QGE1F7_F!}D#c!{DM zs)Gp}Ch_WiWA`3=uujysj+=32fFd#WvnWYwGe0Pl%(b7uP`j{rusi1XC%f>gkpv}_ znWt9o`RvvHc%VA2L|CntK!EIOv%Lg>iBmllyW3o&nZ{7`$_R+~5rDN09cp{Jv!Yx8 zB+|p8a-tYqYND#REW#CJ3fCO&jMsVB;F=dQ-4E-lit$GSJcDKXVe+TxHU+Z@@y^_k z8iyVr5C6`Yi`{(d(3DPu&M*|Ixq^w^5ln$FCY$Qc&a@jf?&$_-)Jh#;FELhreS_i? zM0qMWlLZr&druv)6o>#vDdi;=A@#B7Nyg0DwxRtV8ox$F>8frxE^Pnfu;z+6m7^Va zfGaIYwV7Qu)u~nKbpuNEI4zb!nbN1{-RlI3$zjr^*VRXE8NtnG~&_j7-b&LUUzL8Nk{ChO9@AsOg=Wu*K?& zesgN3R*Wcj;)+=0hyq186J6u?F~L8REq-`haYh93j8Ou`FG&AshDHK1nl2Zx^70q# zVDNzc*aV6yl)CQBFUQ-YXiPMA-K@Udv=v_rSLklWv<(G*Ep`S>4kpj8d9@C%XmnZ? zvjH->3Eca{5ZtzT=C7?E{`CVqqk{3~aUQV~X&pM^weRpw`K5ERE`5F3nhU_phQwn0$^IvEE29*`Ajtj#*;E?g1yp4 z^nvvrCVy1@CVnOq(nc9x%c73st<-|#Gh(mhW-OgG@WlCat#5U$e>$|+?| zbi!+10U}E?K9TO(fUnP+6FSxBn{n&BvyRRexegKruvIS>ldg!V6d$eHriM@D^r`26 z`poj{a4syP!N_~k&RBHeYx`knCy-x+wBe0raX&-i2)Fz5uExIN#wF~No_fmd1Yh#o zfM0QS^j`R)@HzPAg&tipp5j+d5&Q2Uc^GPks6UWGa!2@2mu6jhzi*#p{eg*TMs)$C z=v$2 ziHr_Cyy)f$d3Nx8L{zO;XtB^_K-s2hZ2i}Y3=)ul8j(}e^W~My(s+2-RL$!ONEV85 z(E2fr#IA*k4$s(4%18F1y8vsbowp{r+d>~!c^AcI<5q^}D8uUirE`FaqLqRF(qO;Z zA!UcH&PVRMaNj)F)%X5j7hYQbMWtkftvT}2jTrhDvm}j88(7LyldgAQ!*fuModj{n zO(uzI;Z=S%0tmfMjJ1G5n_c+H#0C7N}P zql_?C128joxn0w1y--^4q7rVJPehxL@8FDh<8FVN;SnByFfB)qV<@jkB(^h;Lue^2 z^Jd`O|C$^NFmgUsoM+N@wy`1*00n3FqaF-{s!5(HH7-#|tYc2+X4zv#gfIzbvy}}) zc5Rs&A?IWvMSv*vx%&{vpjYT6s{HQS>n3}2&wjxwsI38NV<6g9B>C8G<`Pr)X^2B) z{Ejd5_tbI4(B;U!bNUSE4j;ht;@9L8uJIc0;^(SjnJ&RFg1s05pZL^kxa+qL&-bUpRctTltUP#*Nt{ zO^Y({bhT2PJM6Za4SZ(a@iMKMQ^kNXzZP%}@goMfbR&|JsMneeD9OhefS5Gk(g!!P z3?jkkn4yiI0M;_nAWu`k%KcTq?+L)GeeiFjB8W&NvpcnAA;qN`M+4NuDR%Z1kgI_| z3&o5^Y`Ts0xDF1WqICmaHVEd~l3JP_lhP#)0~xJB<*j4&pZ7S6~N<)NM!W4|?}efnyzy&aa*3{7eKF zUJ)WPCc{dT3z~r_WFhFKz%X`3Mdh2UIpk$@F1$50?MU zHZg#m_F1d$7>hV`YpZ@;VIMU**i}}#Q6xNgl~Z%YeQ2MK%mK!$kSS=vHCPkLoneE!YNU0pA_(sGR(UkPq(p+%aubuRFxEd z8h!LO9GU9mWXy2B#z5Qp0D92uDLo)B_ohl7R!I9vM&RS~zA#5KT>}6vgZ)JO-Kh~2 z!v2}MZgcaVW-&+V>1?{ufsaD}^&Ks7%01K}4fM8YNrGRawZ1t}Vq`xLFZsk<9iQky zNo(^X#gOmlf)oa@=yL4=r9M{XG+dtMdyMxvi_4CT2~-8 z$ln0eE%e%Mqug5c=m{5}TH6AomX$>GAfD=M&nvRVPspkkvzudR2uNC)D_;}BN`^*1^K~dsw zBl^^tV}M$(e4R`@eU(&_g9D$~Ann%DOAHiMkm56=8t^hb97*S5?>2{jI2KOp+%1NA zNr?#f|Da@M_f1a&9zjaeC3OH00;C`5bc4S8nEm_O^4$TSN@49IUdO_d2h;c?)4bL9 zgAXf>*)+o--J$1q0R2U~rMx7n-6&5tAkGBM8+g^OeV)Rr0cjo-;Xbv7rJ=y!sGcg< zT+F$ZUfnu=PNa)iBCh*~bE)A6gb*;?{n{M%<<3LrLQagNKAwi}Wu++jg%@Yy2k;vt zG;^gY$<4PKf%Oi2^5N{0porWjtJQ+lVKbb}Rv${U*%z=O(Olq*dmy$d@sMgSHdawPcSs_lQYo^&HX)`hGreK}X5GciRU7bm5Y!45ij6fFu`v z&D@gLR1}%<5dw#2q@yQ3d%NGuT^J|zRzgq--)+kI_Yg#UpvcqfR#tB=F?5X4cTB&R zuCq*@x8kaSpsvXG^fST%9%{{{XEZ=bE-6G>HXhJTY~md(v6X%R~w{1 zSi&Ofs@>`5s-JDS*x_1+Vro{=EBziVaz=MBpU%3P*E0$)|7-nQB8@u^{}gn9{eL6c-B#J&wq z(aro3LQuOMpjcZp=)f!oO%74F*{10 z3RN2U=ipM%Wg?MIL<^{PujWu%yIq>QNczYbX>3t9Vqgdb=0GlmauZKjn&<*&i&E~E zN1Qg;iA!_u-g(dC?MZS=X`L-KfBVh>W|3U$ zd}Nl8f`V~}78PgFqR+GFlhG>Fd;4=puOc0B#j2@Vs5fmdeJsjMprs9W=@5uWTf~mm zWT1qoHv@pMbsHfRMK>>oIx7pb?4HUyJV%b+x=GyhauR_^7uL!AeHBYCex#&bRg@`` ze1o>-ki%Ov7bTV7=x-DLMOAbF7p&VAu0zO=(gHY_z$YT%?^Ayv5`L|Z8fk|5S0lX6 zD7ioAd$A%ES{xGlE7O9K86U0UHFUb?Zrr0qNNb{5U*{^W$872Ec z`-r;*kM-VlBB;WKnau0Tn>tW4G{++rsm-Z0mupiqvr_)IR-%X}ItF+Z^gDp{bw+7D z?o~#!pb{AwU}p9N)%xu}Xaqn^-PfK&bZPXkX|~`wimEk?OrAU-{0miPX+W@Gki8-# z)Kq658C(3E;|}$=y?M*DjR(Q(@Dd!3p!H_mHSdmhP~fI7rRghV(1OwbP8KReW+DRy z&|(HXdw%5><^UW}10Ut+M$k3r!)N3J7ii}(r_*aI_=+rXD18kKb&ulUJj5x|5ziG5 z0PG?E2~G)6Z)Vr*>532231$1NzW?Z6hjeOHKdn4HKuPUmtph~!20lJRy^|8n`!`mk zF2FdG>bTgx5YX1JD&h(MQDa!MnzRMfaA_fJu`8~a_1}h;1uN+R%XP`j=Wux1K=_PPpbGGo1ApeU< z7T1-We?jFwkqXPe1)$W;NdxnYY4MU_zT$%Z1rQW-vs_ms8Lh?-npOGZY2`aol;dah zPL^i&-thCMR5wh^`MNunG-6a53V_-P5~I#iiZI zD;`B4y{<)%*BS$HX_B|9fz5z@8YXSv#_xRA>qw>Zzr#%_@p!?2sBl+)*SG~C4=1f}kT9mm)?3jUnC$UgsJlN62 z#+EP#ZvDXa=6*se*UO>k4Hq%`*q)}exAhF&mslm=X|&`~w7$rN+N&Wr{%ymHHv~U` zKuw8Dv7QSx{%Aa2F5o(2 z`*;3UY$5JQJ4{x){dX{Xeqk4T>|KS{D9R-4zD`lT1011%lWAOOM=;Gds3fK# z3@Xo%7Uv^HNlF~4Nz8V43LZ6La9!ZTgXepN0!FMhe+1F~OfEkPDduY5;N^D+RGTA& zc^lrjX5F3zO_N|W~FT5S!W-yG(24H2PCF&`)^FH+GC(499$ahqkRVk~dP?M!~7P QWyEhZRdrQLmF%AXA2Vqr#sB~S literal 0 HcmV?d00001 diff --git a/docs/images/web-dashboard.png b/docs/images/web-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..09cd1fca9cdd95c7efd6a48cb525221fe38ef05e GIT binary patch literal 106102 zcmdSBbzGD0-#$DH5D_dw8cAvCE&*wfZcw_BmK@?oN$DCjrIGF!Fc9emVKQPUU7OTK zj^E|y{(9ff^ZfPv`MddRjMv4^>pI_Y9LM`O7yUw8h4ePfZ4d}Vs-~)>2LchwgFx4@ zw+MlE;3c|FAP^HsO-aGvjn(er%}fLP^Zxy8d*{UT#N^~ek3w34Eplh&LWLqlGpi{O zfdXq0Z6S=dP^wTWAbRo2PY$-RyZf{UyY2#AoV3GXjEVxhhD@D;)|QW z$Nc-#^-hTyMDX{wybquoe_y|$yLRvI>t(N7@_%24_douh3m78*7hUjG1~ix_10&}( zvS5%2d9s73PKl-BM`9!nvDowebbG| z-9ZiTWcBmIpkq(jSvktBnbWbQ*gZDWr5M(8Oe@OD^)hW-101+zL)*b}I=}Nd`{c-e znO2)FV=bofE?vgPlZN@f5pm1J5nBUD;6j2odSj`Q`P{P*d_9wy0&;UGnb7UjR6a|= z-?`yT>kFr!YBpC0kL`!kN3pId(FHM@1N4fw+2VMX$dm(ku?gbGnjfG+4&y=>mqpgI zn|gBZn^`Af!ah-j;p=cq8qTelGK<^DHSZ2Rx8PP~QR!scyYIAVsdUIpHGr(=K6O9gE5si2}ku#B%n85m4=qWu~UzNde{7Uc%_ zZ~EEiQ`S1o@#BE5!vpp=q3&~7TuUUQms0DG&)r3g35QI)Snhgz9V_j3^n*B>f;;`v zjFd)PzV9Q+?T0x%H;tK@L8mRR6sd)sqGZ6`5vNn1Lt!r;_o0a8zw^U2lRHC$vbQD( znP>>z_!u&{_7_?}L;%QFM<>-?$wMi|V)hwN^vez*6oUQ<+ zDw$BuQ-oYn|65+xGy7=v%ITXt+|t+Ysc2M7XY>V!j`&s#Fqg;lrD}RDMBX#^?07od zWELb|bp@vn7x!M^`_CQ8f4iLlvcu(d9AM|wMjDzdp`#8FECO!-=hu(4h+c%)Ny-uFHX^Oc5=KNq#b?=Or^5{` z(Rs&<_|+al%FiGZ#8YlmU5l`U?Q@wG)cprVRmh<-goY$ z+WuTJ1PMw83#;8{VG0>|#8JnZaKC{8`Rwb|aa6T|7G*D)e1qS&6Q6N51%o7)!GasE zi@GltStKrhSW{BQJyw25x`KJ#M0+ptrwYK|e-C;_aw0J+olNvr(N27>?6W!ll@GCX26iAmt zJ1>26@|_vA1w2d(i=N}A74=9A^x4S#)CIA{8NVaCn~dF)QXT0c_(~7!KI8rwLB=Qh zTK=jl;98EPpSq~W!b^CQI6q1tP8TYCVIt~|bb^y%KuXT#8QyC{|2zsOSKDNZy-nmt zo$fly(t0Ai`8zFCst$;m3A1M#cjdOY#lEytoK&eIdSnHEhP;T4D^0psb6NX@t4!=M z1m)kZ2D37j#Lzq@P|eCrvh&>f^hy3*?8Af$yDcJxdDol5>B-S7!wV4#*HIf5hZAx3 z4|E9zJ_qyL4@8G|4SJuvg<9Jz+_%>>k( zS3N4Kdq}@sM7(gE3Cw@b6$T$l6N-$Z6|*{^dh*gr%KzOO9p4joHk--rZ^!lMuQ!LI zANChn%n4#$W6Rg1)N{Gs%Txm8NH>LDE7f5%Yrfj@CR47UQX0csW&gC-``4%K)1)L; zf(DT`3Ityx%^8NrU(@WmTWFl+}JJ&0Nq?EOHvxY=I&~wM%pnl8c zWxkr%lv7Nbdv~SNoHMNcafZ<;a{nh-JUijE;oqGnG?Q7i_ylZwlmCfcO8M5%oY_ zR;|rvY!|h70Tuym;k2wF;`@&0es69vNv01rx*}MEv2<@Sgd1ESXDCp0{U43@NZfm! ze#y&kYAyW)RMvi6>jqzu1=Y5V0%g|>1Li95QKIs!Hoh7|k;*SXUe6l0F$7|VumY$s?x$mb{P!EPxP z#&t?UnPzsJJ#boIVh1cwuf>UTFr6jgXnV>mBs8SZHp7!u;p;a+$3E7>E;u1amXH(3 z``k$W>7ns^bC3?kq|YNzjsDdO z^!-pi-1~A+;frh4FD;*~S>sg4#P5_^qW1>$R&u-eYVuC9(ODjnzHes^qY~m|Xusb~ zUuVdm?<02(V0yVg+7BxHy5676o}O`$D)m8T`~d?&RQ%#kan+MaBL1SyJ`M*-a0tJt zE~`_poXM4HyxeW%(o}SZoqzWyTzzHO6XOu(Dw2xD04sGIOLsHw!d9;JP}=P;zFmg1 zNncA0&?`=V8`>#cJzWeQ|A(%J5SPr6aNVVp9**YT7|%^FOX(X(OnRvKw9aqZ?9gh; z4x?JP%4v7ClsnaG4hC+wiC81G>DrdukqQJmY$6eQkV!1zpqd?xrdSI#m_4L$zd))g9 zZ|OX@&Rvf;DvyhU)MXKjHNKDXp)zSbqzqyMZ7mjkbl!R(VkS)e)HiMfB4LW%TVj8w z5|=S2#6FmpYd#v_v&Q@6Snl*_^p?D!-N2KA=Lw?R#WZ3rtj!*a!qX|>T$^k6iz+3j z3bjwwamHwq#g~_9ue)!vKkErR1=2ZjzS&dbaGiHI@Ep6BvOOa!I9-L0KNNgcA5Rm$ zI-K3Vo6zdBk=?yY-+Eg<=X$IN!di9FlHk>gkpY5tpGu;rCl;rUV#f;?6|Cnhq>JqW zxj%(hzsFm+GG<3~(B#Tw32V|%(3r)I4JP^mFX>@r^I*;R5 zVp5}qY`zV@sj4px8s#x*uIkO&&^e66ZB9^`ZgUc(=?)D(g~wXjI3Dlyq7BQyEEiA1 zLp7EwiYZcsJV%Dk?Esr&^DXLee>}8-x3#g(6h{{x|~)Lek?}r3GoB=hK**| z`RA0pW{yLsicb>@XlBaQnmuH!h~*8M(K4%t19)u?Z; z@u2#z?G3+*|4k;pG@PTA1zu7J3Yk&QlOtJj@BBc9yk>_U8LV?vk^d;}zbo!w5iiGY zE&OvJZJ5e_o8R`j9HZ%nI66-=7dpA1O@1OKksVP%OJmbY13G8d1fVGbDJeOyqH=ds zntoWxSpC?{7n#1I}>g&%^M6&uY-s z6)(Q!S1LEmL@C3%+d@w3hQq%?d_ccOT;Bc~k!Y_;$1LapD7!z-P%z|V;NJCn#zX0x zy!4X3zSQBRY2`*5#hQ>k1o~Q{Ns{s`#YfJql^gG=#(bY1&Ju;}?kf=5f8^qwCZsse z-CADn6_rVve~W+s``1A=uhEotXWN^r{n|Yd&H&-EGwm0y(fPCtgOibX_BWIFn1iKp z^X1*oIxKZ|_xvot#z=-YT!RI{H%a7k7Wa=+?vyh`ir+f>0MOrcZRk_a|JP$~pe^+z z1bdpvY?{z}EyZwu%x)I2wBWTA*Fb`2R35Oa^T;JoKOWDMNzs9CvL-Odq$Z)TN$Q3> znF?PWHL3Zj#-T}B$21xr;!N%2tF?=d`>aXjr|bvp+FH$;T_A3AEoOoaL8yP2;o27p zW4SVHs5|(vIK}+#Sh9bXj_UpE0()Fco1B`cuL{upqob$^zFP0qA;xV08!k=lNd%w$ zvvtW~xE(Oc^xO0MBPLXsl)?6F`IWk{_8+;Tx^tIDBZDs~N5W?)zn6doR_?4{qMpDY zi3|l@qUU_5G`|+bGs>~EsKh6Ft+3w+`x**5=t;0GR8I@{_+sHj6>d;!GP!rap?#)2 zl*&na5~iz-+n!SWPQf$H-?JQFH2R)QG1(iyVtI;I4BT3e^(5&I zlFDTjlmi0@qFgek%%5-Ed35)iVeE%$!RKjJn432UjG~rH^*@wO^(enclr>_VGv#W6 z7`b}3CrV0PPp|x(K=!SQS79mUfp6I2(SFJr!g>G^8M^u&JaI8`gGsF*cy8xsOe0!@ zq(AW)@jJ6m;`P@O;dPe(!Nz#7(?b5oZ?Vu9&#y4F!S7I78IvOk)I!Uj4>hR9hff&s z9G#uA4xbKY>0#M?WvTJ7{b`)yoh?zu0p^pRR^svn!I z2M%_V~vp_&?NqS*!T-ds#Qk z0!8{1(=#F#1kqux^Sg*g0yaY_9Nmo1?%qW*E5q8n>F$2Z-#H&aAnt^tHHqvHAPydv z8CPZ?L248s$m8rRO14F*X5Uj>5Az=xwv_q$f3_eTZ1I_ytte>k!>^qk?j)9A$SiBQ zF;DUgoF6~G^9=N#9tQ&9MfM-E3fm?|0sLUPe+`{G|Fe$o2Gf834XA77UijbFpajML zxlWpl;MU(i{1*Se@PZ^khmlQ;m-$~E5`?#oJqig8k^&7Lo_1Uzr2alC&>O=4rNT6a z#q~rUQyFTusol*(KVd(|2hknBPZ~^F_-)QE<2>G=Q4UZD zwFsqX`|)@!htpb{-t?^FtSnqQZx&m#=i;qt9B&e{a`N4n^yI0vFGJ>DD}w+n0cgaj z_a&0zT@mcT~hIFyLDWF3W3+np^mu6OX!XAh-ox%M1|rb!2?Lqr2A z0m?1&Tc6`%W;!-xWuh{GijBxIaY9r1(nG=r$$a;~qHF zW___O(DIAXfMan+r3};lFSbNEvb~gat#U}9ZoX2Q-@JBKjne7)xyJhk7$VoXpN}+m zms(BRSyYlVP3tw{9tn)LGpgK8rPlAedA@MCF}_-G`*gLt1Ge7i6MkP0^k52yilMSz z=UZ}F-;#t%1}gm-G0b_d3d|R7Bc42_;?EJ8{<~5p8{paI8&yczwSkfKuCWcCGx9;l zjBFIL6|dmdbuS3_4}&>r0|@^iFnalU`@1LK9(>pKTI9xfp2mntt=++Rf&JGXKi5O; zZ$6|ECLhd3j`-Zsu8{8)=z6g+mXrFy?^@fKH`&u?x8=X@bfSJ8YEK zxVifC-MQXpJJIt)b@NE2SQ@Pm=qZv{_3!ihca=&+(wNiHTMu7s{$M}~Dwa@B z6-%wmMhuMZAd1W?6W-k3gRFC9I4B~SL`CCC-Dna3v;`znGiyCW}%m_DE4>qO4ktS*GWl5Q_It- z(@9;^HO8wdHDCOE^fHw<%apQu;g41%wi5kD`9N^d^}Q&FcjfnE|v`;l=UHkGOiYzQf(@XIJF{?9z-Fw{u!{zWUD zYzsouaVX0Ypi<7oJ4W2>fCSh4j@b3iJyJa*Pgxf{iY7owg6NSt5f_4BnD-U2d@2m% zim|Xma7SC~UYxFEaQKJ9qkM3PHzpvzEV$36G)x^j9DQfK1RIIhy83DAJr9 zacFzK_k5~#2P71_v+h@B_81EBm@mutetx1av?u-~=x9>_07EP6@+NIg>C}on5+E-; zzUJ|weRqyC-}O61mEwY(xK0Qekop#()}xknTFGoWuZl&!1!8w0TkIOn!-+%o-Vk*C z-(|>ui%kS6U60j*jYVfO~)hNq|lgG+A4^s&dh=3w5BS&hV$;ctS2hqp)jH3Q6P1XKC*X7D*c z`P!&#DURjaiy6NCRIf;lLujK?3}a59YSLMKK+=9n9Zj|K&-d2y+qhJF9q0Z-=-4yNsxy-A#8`M{wi=Oy@3<4Vbpz)_t&1~tuypmtN8c!I*3^Wc_&*kG8miUJ=#*%g0SlN%7ncwY2vOgJFC+uJ*ljvd{pcu9vUL*6O#CRbe8j5`W>< z6^7Dvk}W@H4IT@@x}r*S?9XTYy!XGF2Iompa3hj0ZpNwstz>PvlU@)!X7ES)_Uw)2 zpK%dQ)!GTmINZ>lgYv&9ZLxd9zr%fAseS3-eY|Zy*ZwL^W;_k~1+#{I%ZI?HP?JY<=6+5807qk;pse9x+Gg zSu^Y|(xzHR^_h?R^9Jya1?>@h{||IJZP29%wq*YLmEvC*BZxhJjBN)izFAN~g6E9C z7*zfNAt7r^IL|)};Rr2f_N!lmDKxktN%}PQLrXjuCwW&V{#^L^h)FjZeDz)8%$j^Q zIM`{#s=?IX9mU%7;i%@n!u_|-8{6xNbrfIJ$2(cRNvV^Y!h;}3yU3y4ySz4W3_^-^ z4#W0V;6#qJ4(QokYL=oQBT6|rx&7eNsSw;zS;16`)y;FE_-(NZO{DMcpE-Ck(onW$ zqkQT5bB)uOnRmQ!0BrpMT_Z=a8{?w~X_WeHV2Y=xG{fxptY?KRq;m0eOZ-r=at5AT zlb}~Xbz;>kRCSPQZ*Lz7;T4_vq9<-5z}x`6e6`>^2bNeoO&pcKG$ z*b4-t*%t=rVCL-cjLzdE+@y&BFl6tEJW4(FDgFUO1J)WV@V@TB&FNtPPVJteM{=4K zZ2Dr@47va5P_<}vk=dFJF0~L3Fk2tX;sJ8vcGF#v)pLhs+*FB*`NK@JueNY!koZBr z^Hg)N`C)(}O9R3|>70AR%%l~Gn|7!cK!o<{&0UwH5D>-4dOn*$EP}6ye|j-)A$QEn zUX&FJm+DR}TrJ%go@Ge~zQoi=xF@053=)nRSTUIEl`v+|HkLR&g=nvm5`HvB-BM z5ey&}i8N-i7_-wUkj!1T<^Rl}rZ=imHYaTdI$+J3B=^ggQ~5$2AcC$%yFZ$&B%9sc z){kiq3Y9=JuoN4 z!5VmwD!2@m8w`fjL5zsedCz7+tJqOmJ-7q$LuPVLD2XqypULnG~OErsnq!tM|{6 zYE2GK2CRe$&0E8t6HogYn#k_Zg+KB1^fZNEHdw%dOkKbR-|{@ErQIUPxlOIO(#P(* z1=EVSvLv;)uOguEl*c{b^nA7<$lk0GD{?f=U*h0opJhMr><1rm6E&VB1t%ZAs$x~m zG#N51b;$b_aBSyn5+A*d3@#<-ve2{Xjb{O*y>vzu(&Ucdra6q%d4r*2nL%S-`>~OQ zgx{~yt*n7orw3Dlep2NK7gn`owu~J_)xg)*X}j4t=x8vnEQU3$d?sTp)bqi^knH=(0fEUnu`DJoOPS0 zxkxo9unGa4N6j86#U-t51@vMEODxq$B4g|nNBLmq|Nt^3x(aJkEnlz_*Ahy{b8GXiB)m1_@33??C6eQ z3(C08a~#{HLqsj(|6z5+u&be^EdUb_?B#%k(5&qDS=Eo(jUqa^a)B2n9;nV&G4W_@ z_J`ocZ4r^T+eNXC_6v8fQryiWB3d65aSu6Gb|%|l3WawXo$z;@XPR6~uP4@6WdFf# zU>3hy}d6fj|#uVypsX$}kQAw7Qo zCKe1mcvNOpQu{3d3Itw*abFyRTLdKq(q}aP{XD=Xkn?h(LnfyUGsaUT=Gn$=AlDzO zvBuaA|4=)M46!P6KDJ>a0k97atJNJ*ipYgm6#^n$8;+W9OUOZVe@uph_p4hn<7H`On)*L71?HlB|n**U;p8`)PN*wp*IDi_RmhgSlarG zRQMTGVKc1EXZ<`DBOP?0Or$i8sZVqZhWq@uSNkX5t>QbR9H?m?x!lX;Q)J&iK29RG zz2f+o)s$w)O?d-GmfFY&&OLcYJdpMwMJ<^%gRoH@f(QydKKGCF-MJ`hhsrc}bOHq8 zS^ZTS40SsI@m^?;9W$TwaI|rcf-^ZsD!>fD#e9IglGv)zq&C%6C3GCrI94)|)AM*y zp9dXg{RQFTgx+hb&T5$0i(&!9fTZ|Jx!Q#6ZKO{WIiHysKw@|~;_1`hqI|vQ*-D#0 z627k!Bs`C4!p>HcMzRDrO)}D}VPZR-+hQjwgAiD_(nm_ID(epB(6(lQe%sAbHTKe3 z`yJ13Z)K!*gGYB}CudG~wu6ZNRJ4m`yI;O4zkNWejmdAD7? zPy!&eY`hHh)$p^x-^*3PrG`lI#T@6yR{iUfHg@&nl3C2>fQ+}g0MXZLvN4Rl&r)pg zWWO_X&wN|d>2c$Zn9zK)&78D^&q3x$j_A@-?sQVknfgv4gIF3=^Y5plU7t0K+gDv5P;lbk1>xqA0p_iD#BW*AdE z>{N9Hz$K0Kin)itKa2$kiQVQ8yt_O#4c=_eZw=s6!;)7ZFt8iZ38WZR$T(fg^O7TLOz4>|(OLc7EmPu_1tWmUx9G=HZcB7sn?ZJYxyyb$MS zQ(55M2p3MQsq)#8EkvX&DJFC1@Rm&#ifkn1=^&NoFN&l_uHQJvx}^+QEwS?iNLP&+ zc}lWp@a3jCFd7R&=Noo%Oo`|>6t9n2U8+DnS-d+PTO|CkLz@m_6+XZ6gHr%9Q9z)j zIPKMrjZj}AA!SlKGvxO^b}w76@|mm;pKapW1~3YL|_lqx~d!#F#6a+oU`K;dMuzu9ZZ-fpN1K z>i6`jbS7T|HogNF3~&2Wq^Jxa_3OfxvZmnS+8k0Rq{Ox#&)yHPizB;WSWRf@}uYrQJl9q z@OXH~N!M>{JJi7fGQsE5+otHy*?0%w55^d=D{DX#4W~n#n zUdOf&edMTWTO4F`dc+8n->=?N4a1=`(@Cq^O7#Gh?_@BR)n}GYuj-A_VIXfydbNSR z5nuMkLHoq49MZc~b?G}+x<7QY3P!zg*%Y#;0I1flW))(y%|PEh9F9(0nmuSH*2eTz zX=eFY09TD53L@-Y)}A2&8wPcy0m#QJe0o;jaA;k$I{_W+E_099Mff38m_fl?-z|Y} zzWODLGn}p!ETkq4Cspsw`uF`Rc4lwe^>|lZ3Om2$%$zMV`xd5-LYr0tDv7 z@|#*6j5{6AVq=5i|M3N?!lCB4SVyFZ4&IeJj-3}d|NdYiZyc#7PqLSWjV0Y*h!U9vs* z@UK&$KkB$c-co%vK2S}z%2M*Te)krB!uCrgICVwR3?qf%@84NyyL$|XzO&V)4oe8H z{CuTohxlm9O7kYX>;{A$o%A^;*;GGU*^M{w>VNK5WkKx^m&)UUy zz>YG3M-xjKv&YqNIb>QX;5zzjs$#ss|1T*zR01GG@2$`}gzg{pAGdb6hp2uy3u09s z5-wIv5^?1NW>zgq(KK2#2yRa*A$keQ`D4Zjv(%YiD1e)0Dg3Ckfl)d(zHGGnsX6^I zQD`UnWjQyuBl_AsUQH+62`*U|fz>gfCY8A8o(oa(es?l9pUtEPvanoXqOt2~*vOUD z{94>pIy2Hwt^00FHb-fiVa1+C1eK1U%r4*Gpi?2cK`{l$= znN9dwY}mVEhf_Eb_RxblBnCkj$6F?$bu;;kxleds9B+$lryalM0rBOC@qTlMz*Y}yGyg%rd$5sDF+N(4lD+xTlrHwCV3%jF8Kx5(53?Rz?eP5e^Y64?!LHxUL&c)x*$>^r*$ z=T+^@YPlB8XYl@s_)8d`gO|+{f0xx`;m!KO45bdzJ+0}59~pr2H$+61EN9uxCd+xTo93PPmCF&xO7T3YquIpi zCnxG)o*RGSdr$T`)PY{kKXVIZP9lgY)ZFvtxnF)_^IiprZXnB$Hxnp7wfVYu+%EWB zq{HLtrGZP34K457m3;AK#>MFjiMZm|eVWT@M#>FjT+BW86qDfZ%IXv>{A!E3PP!C~)$yg+WMAX_Uj8kmnH&6!9 zL7&Y$D^5sAm44BmY>0m{eE{x{eA6}sa&tqN2 z`mad0J=)eMpHbD z5`H;xUbM2`e2tek6^EG?_;zU8^Jc@=mGrgTuX(HDVLBNGS0i50`E7M4G)vXB#FqUB zndz?q%5&)Tnj*YKs>+C<(|R0R=iM98#TIqZiLU`<(-lF`5arcLpCO0j>g7UGSAN5mR*N zc(r}def!e0^zz(4bC!;>BdpooisLeBo`U-!0n~2JB2{t`t8Hi&$30EF@RGow$|+BZ0FZX`2jAy3(?Ss5V?H# zr77ENR$+q@uT;e@mhiXjG0fT$oWX z07GgQqz%7V&Y4{AFzaQMq3n;ROEwyH%{+ZfyeBaE^m+e{*KQy47dI-Fd=0eet`ucm z^+bM8D>T3|Xc5(fv~flxok-6&P8nsrI=rP$VzTLwLs8XVtZG^VD_@p3)J1*^8=2x9l-O1TuNQJ)tGA4-rrd0r* z?44~~8jrc~Fh1@uY&xCD7~g)cBA9Eh?fKTH)rZAANpaNms;3Vy^Orx&D{n2_1dRbY zrwaiZV29m#T~JxaO5zs{C#AN0A+y^WuutU;x1f?*W)fg*!xqPt-+N>YA=7LN;p{;J zQ@L&8X5gB~x#eE4aj$(ph_&z#0r7YLQDLv*d}&HAQ4>LUki;ufSQB$bVf2kL07l66od=Uqx^A2!*g)Q$V>805v&H__gBIH@N6=Mx;2~8 znEuR)cU%U@d}tM-9!;{dFw684TbbQ`dpq7&idhga`zKfcVsY?O|MGH9ATy?HP7WQ% zN8T`x%9XKFjX_1uS1#uClXr7d{pA^f!!7R*Oa23WrdFU_ev++zhgr@9`3PhtbOS<} zz?e4fO85)`QtGFu4J%O${l&>6bw#ZN}_S2MZwMhkAg7Oy$I?+oN zyf+(fLToea0I8c9D(rr#4zhXg{Qto_Hj@g2n1$9g@7E&;Vt0^U&1-r1fuwftKLS0g zb3WGk23pX^vD6{HW1jFEVM0;mHn6(%%8Ioexo;(7x1D%D>v(uBwW!}F=i#F$|1KEX z1)j`LpRau`44MRYjb}=Zk*fioMh?^ZHBrkhamtWJkYK=;zgmuXH0SdQiza!!!Z716 z2sfvg!<4>{snKuWWqw$zA0vpWyRC@6J%;3mVaKc90oLP-6zQNNdD$;UDDp=+MA``E zERT$pN1SF0lO>;yuX4}#JSR4Nwx((WYnTQfq}%5Al7_liT%lX*IY!U6y}Wmuz9k)} zHpRnh9M+i2^a?r`B{>_08`>UB+E$`2V;uq(%Ah$xfuK4{}QX?>8M-!Szn@65vv zY})yzi4*T4piNYCY5(ij=lu1Yd883sHU>w~bWW z4w%l4NU^dtv-9Ukb`Fp=yB9|x6))^*Vyc~Y(u0Rl_J1vd$L)?)J{@umry!bg% zf)XlL{W$XOZY|vQ&mlFAca2YifT7l@hmxHBJ^itBEh1GueKgBlLs$`yx!}A-kI1$# zAUr$R~0i1^pnPT^q95d*|~u0q{IGkAlFL&orj*70f$774vfkB zgT%3oy0vn3lmcqLUvw0YE&SweM!YpnXfgf0F+k1? zGfV-YOaBuf2u5#RQ!f$u;ZG56f_p)_?z?>aT+2MW*8S)V-+b*}QSYg+vrs1G%OvKT zH{K_8bc~8@1F$P*pXQp$tM(=E(V6!}C~&e)2?th%Q&d%vs02YxV8?|gXJ-SSJSDR! zB`zZ`o_MXW3G;F`4nHORT)#G8+gAR)ip^)8>)sci6F(feaSkRWNG=RWCttAZrkMM| zBO$EuyAM!EZN!H=n_L={?KBaQ>co-C>C6hD8nxd0cw_te|H&+UDPB{ z-qH_;Yti!C!Wkc&L@zH;08C>>@=aCK*lUYU|L!Trt|$5-4GXXUl}=i$R*i@1A5r2x z;2d-3vzF!{+0YWRG!mbhrMBf56ROnml}YtiJUX8WEY|T+`FvRcv@DXya#4B#WlCeq z<0tNh1)*WC0=@Zf2dG9}Z*pJ6U-{MAh02vU^8)An*n;tKtvi~N7O?A+l!8OsDhrmX z_kkR{+}6pdQv&QA&a=8CYJh*FF?M+DNT{s}aMFlPBS*&uSHPJOswU}W3fXxiW?fSy z2rYp+KgGkm@@E~~W+!tE=z!_9D9Wi+*=|=aGWkv?#9~}8=Z_fkzg~d+okAUHMqsFP zBZP+C*~@Hex!>J2P;GFU)buhk*Z#;LHA=pahIj9v6t3{?oxzHu6^nYm z?n)eH)zrS}_I1cBzbszlTpPr_4IQOBT?udS&>gn24$W^aDax)fZepc?m%bsq>L`a!@>4mnO)NP# zFDm{*xy{$jC4qj~qLg%}wfM6}F5xJf#;k=mdW3kc!!`Ewyn1J-KMgAt`5d%@q`+bnRX6IJ1kVb$sMbBVJ3E8cl7&4DdS&B- zq>U~+CwzI=w1K1xvLGa*=U>vz&qUB*U5u51B=(jj>%Nxwg3ef|I>fN-MQbrYZww-zONb{(MuK_mPv_#(f3o?kF&M*!u8|Yd2EtvcHY;yN3mg z8GtNK;{j|uP*QHoCjY_vGC`WtUwdajUtSgU_qB@S12zwS_3AK*d0NzObi{{QLB|5_ zxaPcffFM8WzrkP-lld=3GHW#hIOC5(5DFDnW37*-nw<6xGB96ydr+UdKT(!h;hKA% zRco!a`fyOy}K?HF@x}Q=+?QxS)1a!9>nDGOKT~ z_U^}t1r=Wz-;tZ;B(1-XE?Z2!u_MIP5)I9PmFLRuC_)dc%~{(X@>@NNe$ac~*na@c zS8&S6Q?#3mp!OHj_1hLp0jv!omBfvHz1e()sF(>0D&&LS@o`j~=g*iA&;$nAr|-eB zFduOq9JvY_o$`2c4>8M!=6YT}@84Oq6fX2)&9Y zMl_TQ@>aP9Xa+4bWV0AAl5|Ele5zc0?>uRC9r9#p=>dP(vxkpnDlDFS|NJPT-5E#z zCjdZrcfctAo1a?JCAq?~b+yrQ^K!a@yMBD$KP{DWdf@Urz`h^*QPBPu?&`>eiJYd{ ziQ~Q86Si90{-o)Wguw>uzASV+UPJih^!`7-uRYz}{dN-+1=nG3?@zg`U%eCC&-?dw zy5Q0Oi@rsKnI4)q3tsC~t+Q#)$myUQToJtoy4QV?7yCxJ*7_Rg-UI$XzOb*JL?EU+ z7uHcq2Tgz8q)B?fs=Dk6|8HB|Z_xjRCj9?DOVVz+!E||kmmI(|fG!hxcQA&6dv$3M zhLu)}2tRlmZ+c+z*Elk99CYf{xF${d!3g9lMT_;jc1gOg z-nv?6(dma2BVBK=RFA8H*lj)pZx4?b0{TYp5l^LChLzo2CMz}OXn+Tvc=@0+ZWaIXkW=@C5)Z8dH4`9KwbLkK{Q~916Zz1mFfbNLsvwpvtT383FpoQ#Efxm80WnJ@o09x zFlsQbI_7OWdF@f+YH?R9kLyYUq54yZLaU6e&UroG@hSV*Jx3#?e6yDkU>ZM=8~c14 zdDmC`E6yx6ujgm70&$G5<4%8Y+%$=txnuUFF_ z)DcYq4|;n~*GKcptDT`Nm(K`e9_SJg#bkdk-(@35e>8tp1nB8RjuE;|c5;B`i2i)P z{_fvC2(4d$rAy5Gn1xasZZrQHuotP&FVrYA?1|3mqE-4DT`9Az?OCf zGnBF2{?i?mjg=O%#5#%P14GTYGn z6?m>jnACf87&2eJzB$?`DSurh?iYHr{!Qd5;i!ws&4K9UcHSZ2pFm_@?~HuSX4e0q z6iUvf28ciLFKlqJ2zSOy7y$8Y#pZ2tW%_LSfO=`sH==t<9HbfQb9Seb_CK!Q5P&)n zfEUIfsnvfll=6hxfcHR)f;CZDHmijvRde_|m@&pPMO78XC0V#4^I9fOdIS?!>aupK z$fN<4(ZEU1s^r>c84c>Y+9!tKe>WjeF13Q^7NhJp6{Emj)`75vp-tB zc!Dn-Sb8lDNFV?%-O|E5??*2?mcvu5tGnhN9)Sn#G}%sH-+EtR0)@02uJD{EFj!s)-FAqezZ zy5=$UGopTgqeCg3A>#i=v@^^!4W4d(E6&JPJX;B-)Av5Dy47kP%kbvCb_Vk4wf3H| zw;IECMkB3{Ml(CilnNY79_Zf2Qm{#{y;5{)(zFx-XX&I*7J#Uq;KT94P?9F4fET?< zZ)|jM%-dvlQa72zqr$bGm?>;S!25+32FH9i9au>L^y?m7=rwvswSEuI2E3_$&?~Nd zMHoDy2E+w1+he(a&>%5KDmv3t&>T}K(@n9~YsT5s_gfMGpXKp$3ZvYgKxydP>vw%_+?&mc&+p-+ zyf$^as*!MCeVYneL#Fxl+Y8$N#R1fz5!o`gCF4biZuHlp7*1@(CIa+ovpV&&(h}NO zTbHGX(ob*3ei!_`FLR|@QdF^``m=Z)Yi|gAN{;2T#MaR;=iSyR*hM5`ed+yCS zt~oxX?^0owTrO+r9iF`gPXpieOYt9iA9^2M^BrD7Lq6=(#xLSmFMkNP`m43-V|sM0 zA2Jn!43^||t}iKdYpgsiXxP({oTa9xqe}+J#_#oxzdsIdhYNGgy|%o#7!h6JH$rff z=FK|q>?{PJaZ93LVkFzjd8maElo9&8yscM(#NBs7uFe<_t6N{mS$lnZ*>gN$wjYf6 zM=saBGzv0qKS;KiD$!jz8n<9;AD6qlyc{pGFe(c#)~)u%$HzAZ;_8YAHWk-*g-YAS zw2c8ySB^y&1g7)5eEZcs!qlKe$aVOZO0hI3ldlPASr5a$#0P_=K}Wl;i^|QATLvbk zpLI@q*>X9@8_Bj~{6?KBSMKyEQug+&?3U9)*2s}no~z4v%@v30lGF|r4QWtoOaC9= z4ZJ5ZA&5hpZow8@CG?s_4x{rd1G=0!V) zHpO3C?}IA0eXj8(yVVF!O5D^OzVH#=(q?L#w%7>kb!*qNmBM{R4L9^+?Z&XXgloqc zrU4qvnq!yKBk@YBE~4Z}7Um|DTcm{}SjJ=fiSxVnCZ0An5eZ7cdHa`_*9DaTdEcIY z>@oG+;oViAd~jdmwXQtpqL#p~&rgIXy;mNwdgHmGL+=g|D?Djw3>+M3gE?>16AY1B zWv6!^Xi&P>&YP&I^!2qGmN>PltTU!NOFgBe=z$iHMuXhbv>l69qkAHXZ5DoIN}rGG z{PX4ZSOb^qyw2Bxu&c3aI*zva10Dahni^0q!p?Vh{pQgCmjf+nf-`*HY!8( z+9ftIQFs{-uhR2eudEoHtX65XX>)XVn4v8>XUIA+R<=slJvF7SGuYpqev5H77PdWR zu`Yf5iB;x_5SN>jER(+eYXJeho1$XS8(La_X1)IGx3Wngh?|>Z8IL_p$H2u&FoNN2 zF81wF-_XflHu+F+SX+>4;Z#W9Pj|{m6ioTV(~&ON=u(RxlL($R3g+rmgnk>)Lm$pp zq?y>A3Muvx-kuwGanN?vs0J@4cFx&0$!%Y#@|e_$#_^gGHZXU6iRm}{-h4E7uV`R^ z(s;W}Frt>byFA7H;e&>?(d8p|LyvdJuC8h_fg>B%r^43>Gh3`UN_ouu=GSppv2h-0 zHVy8^{@7+YjtQbk-TAXSM$o&Tu3}xbHgX(~rk*OIMG4$ujQz&T>KHmgMyGg5gc&Z$ zL3U3xr;?8D4)Q5>S3?RHh0vcwpyEQjFP%-vDG!}_;o$6BPZt#pnl3$1YxC;BJ%sk| z_OD+L5mNtPe|52N*PK&HzDRU)&uMDqQINnIksr4z=WY{^8d7@x8o9Qhqtnh2W-6&H9PUFQvt%&eD-6N^= zyfmn+^(yJIq7cwR!L?dFSj77G#QVsMqDJ}nfOx#t5^DHv;tYU!xA9o+h~HWcq{0&x zi`>(-*xNrYFzSjR%#F81z?r-c*QW@GiSulXfJ8nox;h*;{wJuN@?oYda%w6fb`jO_ z63?5((eVSZsdE1O5xUxH!vX&GP5CXQe@7$Xa9As@^hR)q4vE%3#)Qoj7ZJ8rj+x9n z6N21Wr8p3&-M)bLTF)}El~LbyG;@rR=ba9f7Wz%N{CEpxGfh?H)H`l z!7dRmmARAB*-&JkRitT1Loa2_z$*I7uLtI5aGPbsE}Y&=)$WM>GVx^UMP$?xo}?BZ z#bmXz;EVX5Q}ap1&X(lw4T^7_x zi?Q5Ms~EkUb>I|t{-Rc-A%`;uh1Kw{;(lwxgxp}gc=0}W(eNxSkOQ>LE{^|#ECj)j z5!|W=DtGVW_@!OVe0z7T<8h;ZuTrhgIO`+aVuk=}qbO6a+k!esz^H*YGwtUhKRil2 zTAOp2871ERN0T~wz0j{`{UnBDtJ{%oq;DYM`ffX~4wH@(H|AyrQ=8|W^p71@T1*8e zRa-Nn2JzR!gT)7{A|t1~@`=^;Wwx_*Vc#umyUb?TnkdFxy5FU?!MwQ=_h1KH!1+H? zva6l{pT;YY;=#9}U0&zBH1Eez)zy&$gGeiJcj(38!4`4H7)!$|RBTC< zpl^~IpRC7a8i;mz6Q@QK?-4_lkZ|{Q;tFD)4<_%J)?FEFUV4yWz2s8~!*{zMxDNtL z?0g<65+@_Q|6MzlCW*_iZ|mH4+WAUpAL3U4K|9tGvX%9SV>UI-FXd%KaaB zFBE@y(Aypyo09T6H`b7xoSgqGzQ(JIqIxWDAURbF?fb5vofMw{?Sb2QzILaS9U85N$*3;jgjlGK?g-}i^f1QV1(_iglY&c`ZZvL@;L@h6P`~3D;KQgrM z9U3&m<)|tf3;S*J(WjqD(oBO3>hu(od?q75`{K=4)*?HQZCP|~-j6%SOb<^q z=X?jo2<*F9JdbKWul#kRRQ!W{^uc5qjQvr-Yf}}k^5XJx>{)3O<0Sr4N7+=#jk32_ z@0Kr7@$ASgPNL+@0ng)xG?Z1m$9$tchx-P6IfScnXE=+A^vqUhQGgm<;a-?Cc(?cJ z4U4SD;%iXteMT3pj=uBOl{{o^Z~sid>pf__r!o2279hMV)2 z(%_G?tNy|JK?>g%wIPv&5vWmJuta*1*TAtc<+FVK{Ar0ei=3A_It?HDOc5+M6hT@* zCq6&z=5eH15`DyO@#`5jrduq!d=LAomE+ewVf<3F)>zUi$UKETfek(RyaWqqdFm2) zhY%jKSx`H$<4cikuSi&ynr?;!+lS!R^J#m@2l9vKL&9|b-u*uBnX!c2_^~@%P*)?m z>-Xzo0PDhh=C?MD8W%h4NP1S*Xbx))7Ms51o|1Xbc4zXmlnW$!mHCX)9G$%WM2%u* zP02eHOcuMexHyR?Pd3=Or;Q>7M4l1d2pcRfS3+(j4n5u0T4pNDI;8LfkST~rz9Ss1 z2J`6UO#=#_-@CjnN={B-`^83&Gh76)4)qHGhZaRCsUVG;6nl-f3|Z%|6d$II=35|$ zE&K7?x~7%Qw@n8uBd-Q2cISM1t;`ROH>J-bN$t){fcN z*GEWE;*9JFRR}}N=hTCQJbn7E1f?~WAzJCj(5U2o)4SYP$v1bzhAN%?`%Oe+TC96v zn{w_PhyG9{J)077(2vAuxzYv$?9y0qSTP!|9`xH(#!}ai75RaaUIQ-YD#Ld*CjB?e z`c{+sks>T0gI>oC+^y*mzf3fp#KB-m>w|8rhhv{O{P z!|~rUZE!<*ynE3&`j}ecp1H~jp2F??twg5>KTH3@_Fz2Nh%oKNKXc4j`w66IhcVp~ zL$}rFx|p%v7at1db=k|z&o{qv?7{cg%E0Ke`Ft|xI5d_OdH8M0e>}U)ohJcdL-u*U z;X17jmuL0Qa?^EZFgsTQzE6JwYpPzVMibGWR`JjRXCwy^(q2PQp!58ELS26}4;CvA z>!9I>q_U~cm6n@Iy0~yOo=zHHEnn}8BesqeP;tTLZNeBBlz&?=sL}zCt6#t|*+zs7 zf!oYTNAjNqnX6++Z{`0dGGJO z#s1!IX7LhR=RWCq6wk!V)e*8qxmy*A83W|uq2_sm8{6usz|9R>dp<5U!`*RzR^|)c z40KR$B61e=o!924;DR}R3lD|cc1G77lY|%j1^e1&wGmRnnXKXzVt(k!c9nLRiA~V3bTiH( zKyd%Ah^n;F!*GHdWH6u&&+y#yY|o6~R!KPOz;I%|EHY;-t!Fn`i;h#uia_O%tX3>h zZpB*%iVTV($uGWA(uxcN3U zMgklH!sz;&%0GU|`m9TniyY8nV?$!M`+kLp5@RzDrU_W!Nlh3_Q{=sY;bn!-rH(ZB z0Y#_cS0QTJRQ}s)_tJk0zL#cy0ZI8kp9%yLQlj50 z|GD9J2VAwsPtLt|{{3ITzY5Ck=#L-&FAnSv(78)HJo8SQX@CJv3w3@w?^1DKvQ81!@vGdGWG~8E4M;};PLO8$z z8uka4$s7rGgYesN;_d)av_u7cYBI~`#t+s>5)X?+7x>XXsmp)Jj77YCt@BxMO4iO5$ufVk_w?g;ol=1cu={vzukpltB<;HQgRJOV-r(OT}AO2ci` z+21byHOyQ!MEs{WRwuL2wDoVKzn3(*;QdTp-x3ZLx{H;oayce zQ7WBU2sE6OAKN}?@pd{cc2x?Ln;+i|VQ0M0W@n7g2S;@!UKuvXliFYNTk`VnqTX^K zF?gWNz_+WBqx4#1@VH&iYi|nMZoK!nX0yW?oJ=_L?CS_kbo$$kqE%;3`7_yv`G>My&=-AODNE`!r?#rl*(rx7RQuE2lw>w7=1C+BuzF|oIOCM7C%q= zi^dEY%6*kKLzrrS!L(#PHHN^^^Tot4>PQfv#%l9?P#0iobNIQ|kU(D?C^=CmeU zuq}=`>5C-xE=&C*MK`fG;Z0_I9aHkzKSuF+ypLF}w(CpjSvb{ohOP&J@^Az`fE4pQ zNxX*MDb6^uI&f>@F^BnUc8ZtA;h z>p<>$0>}MaIhIGD$}y%)+fb@T@jQ7-_3Hc0s(U3V^Oue6+nRL=iNgHX&$A6^B*utg z4WcM0z9tyfRTeA9_XO4Iltb~b24xqV4KyZNYWLmUq4t)$L!&^3S7mtfT-MoKOZv6e z1~bJd={&&lLM#gU>~wU7_N`Julx|WTG30D)uu}!&-@|#YbXH)ma5C4w+@%L~)02Ai z(f9VtsN<9yt?q=Pf$yy6e%s`jFA7}g9nNrV#_x|`9~>N{|NKH6#KG&z{F!|ESQzT& z_U2LG_tAuFN;Sdij~_?rk)s{u+I}*F~ z9wuXVcJle^#E-Mx+5Qk~tBg)Rn>fuw3VeNarF1PfpYM!_IB5%GX?MA6SR0bf=P|RC znTb3+OohRyocAU}XI=mPqMSN}9A5_SD|qZYx>`L4j2XM)CBo_g0n3h#O*|-Fz15s3 z0Y1L8zV}&L%@F7PHLbgw+pqmww0pO2K*hg(y$uV6>oJkcn6*tj1k^AgAfnZ!U=u7Nu|&+ULZMAg&baau(lm5c`@&}*meRy>|%(8RmFq&6@5sG1jgAeK3HIB zlVwdGVtL08QfTCITq^FM;1Yxi{seq}ifxQMU|+o80+G{S=RMC}Wbx}k&J;&BhH&=m z6tR0rpb^eHvoR0ti4k}cj#dy6guEYw1`P&@3vkHDS!UVFmSO$gZEtC<61e17l|?3=oot8-l#Q-0A}eS75QhDF1{@PS`Rh9 zOG_| zde?P9GGlppyyo+>!w!`vLKp9U7bi~!vlIu1Ck_8H32iqr?p>WJa_95vJTKWz?l6Ho zuP_@-zx8xg@)CK?e{rB(X*2NAc@_hdub0AoFj-FQv*pcvScyfh_uXG|v<8DRM=2&) z;C3Im;z5}K_vpaa0!)j{Jw303pqlpf(HHUier-PitB_b-(Mt0L>rjhIa%bspI)jt( zqlvAr8ey$O0ProsO06awb!X$SALcHX$X_Mh4w z_H8tL`bzx~wQx&SyO|b5k23WO_ZR*9eeYAA{HBy*md5?desj>u)^$}h@-o3U@6t%U zoOz_2_PE33?)mP#?FT0Pk1&Y^cb3NEt78Ik@^7HEclNoRMQFI#cKS&tO_+0Be;ThB zpbB5VMu~&EF4!WPOPTJBu-)C=gT3jR_sQ)##)ETKGG7Bmz4%PJe35$YtD;v!6_H8? z!oC-p|Bv%ml;qz$lv!+YT%x7iG`%-%O8K^QYdj|q0MkWx?hm0u!x*;m*~7m-j4*I* z=g`s9U5C`9A&3X_6oA^^>Er-nFLcuB2@7Rwqr99tCPc**u%`39LmcN?(9BFiY-pRNu^%(%I*y z0)EaLuKHsO^N0!X9Jlw`$&)L`L%urK8>5x?V8d>e#&82abp8MJxR|p#|Xc;$A^4%e(J%sNi zii0zkvQaPOJ=1A}Ml}uJYw3n_uh$^?&(4eAq0v1m(m*XQb4zk|F;+TU5YsimKEZ{% z9J32RJ1{pTjVO7}c?aI&3r7?HKb08|5Gjp20Rpn~!#!001Y}8=oA1Zbv8{Nj++PT{ zWnoJ17PCw(*i6>%G}O@jJYhp4)^mZ?;cr8oii0;wsJMG`B>bj)OevhnkFjbspDS)$ z0}#t>Mqe0C|Hau&$24#Vn)Bjc^nGHKC=t;y9pJ+T_)DWv&m zXk@6LOXo8jI^d##K}*$7wle{p;m|O>oAb8J;zk_L6CPS&N;Bk_dU?yyN?KXBzl(;7 z3t{DK@;@td-Nh6P3^MXr&*om>{Bkz_&)5SCT7XPzrZd%rPxm>rsqu{JI0!hQ$STyW zo??4-&E4no3{a^+fo-^O?$v2FeP6rf8alGj5I)qjxt*V|aE|QNv6UtBIncbmsdYOl zH8RwtMY5f9~!kBDu)6Jaez|wr7v*cIdPNuIBm_P zN-VOanR*Qz|K59nF(fZ={%&`=&KGFHhR$P?fEiV9n?VPrj$S@hewY zq@(xzm-yZ%dvByacV?D@CZZp<$s|h9$Pg`U!;&+(p7-&KvIxI&b1MY4?$(|?PJ!d0 zdsOb=w0*#v|BTe-UgIdVZ6L9b&VQQ~&_hG|rr zrO>BW%z*1tLj^2=eNTZ^1=y6{#nP^NySbGBi4WBDsNIYnsgzq2?wqOxZ7%6QovZ|! zW=npO-(ut9ep!Lu0l%BZ#-3YEwTfpw)OZ8O9KCos+=ocsBjpti8}@cwVcT)aD6>D^ zJ~Vq9qDaA49&R7iNn_o7u|~mOWaLq`W)8zrrvi%G52(OIZ8>m&3^!ih161jH!Cw#9qQc=qt6X2U6MogY%tExi~2Ers!^ zUb!nv$pK^S#CNm;p3_*OwpkEA8v?WA^(RvqoOe1$l!xS%c#Ug}JSIZKD_z!MCW69-gU1I4Qdf(TwjuEUkv;Z~3qN}F z$k01tKM%@mDXhrJkw$r!=Pu`|2GmLV(6c6tYz%)Z&;_8mY5xQ2k&Ja!2*Wi+Q+ct8eOdv!1#mu+7>YIR>Aci87r z43#ttb6>(cyzCeYI?89)^9yPYv^eZRBbzKHu%aqM+LFtml~8GAJU+4P84(~W5%>po z0IE_kJPPG_W|Q1P48RYwoZE59yUNZC7b>9F(^KY3Q2(28j(pgx&ELmqdKPiaEIapC!pDE=4pQSw{}1S)|SIxk^C zI%Z}03~D=m}Cv$nsP z2akz~DX6K@05bx$Pdj8G=*JHwX=$E9c+~}D1v!;>b$Hsb9vf@S<9zjraBZ`&+V_{e zbNJ=Og~IX100ZCaZ#Q1ITdn@joUZyUdh47%H-^U*TB84=Q=cN9dN!qQY)o*8fv%u7 zNh>WU?ebYy#d(qB#S5A<#PTwp)1l$pob2pj;J%uI%1V_+tnSqi(q~Vf;-4Fd$;rw6 zgi=jONl7tP4ICXE(X+Fwf)Q2D9=?jiSZ z-3URm?ZoJ43&46o!2>5CBpewPj1P(+l+>!W5uLAhrNfbzcP7JlE;w}a8LVwJSHpU` z3pBKi2XMhoe4Y4Es_VRXm8E|^SW+&HOSmtdMH%t6NA-05ov*L2)2b|| zqL^5AT{x3oWw$AYv9vy*J=$kOq?Fkark$d|8pc)>kAgSoYi&=(X^3hX6C zWhiJEN?8HnL417U;1B>x(Q0su#uTeeDaOlR(9zVNuXE0t1ke7+GriC4?(53|?pIW0 zs5DcZafJhpKy^;rt@D&SaEG_E^{y=7nFh^yREL_(&a0E{F9S)O>WGN7jg8?*!JBk= z_=*qsZ$cRndnZ@-{a(H81e_fQ2WLm{D~R24Tw}g7f|6UrYO+WTL5=ZGAbLP$_xcGj z76y{o^8~!Fr?0{%;(yT2alC0)9s8GRLsIRPYRSP zowi|?h-mxO&S+TkE_D|vDsGpKqJGIJ9L&2jTV>@xNM_0cvY0F)Io(FcgOMXHHpk}q z2wN%>P6CzKSb{OC<4t8Pt)x1vFh|w!c^8CK$T+{>te7^3ZAPQ#dA@c^0bc%{j;cPu zaZm4*P09x+%e>X9vGd&vM%7ZCcg3zu? z&E5Kt6qWws5mNe##q2nPWpb6pSU{a~1)rm8pB^3d;(0hHmMWsCCSOXX0GELLeQx`U^?Z074jefqxzFP2)fR)w8a^r&b_vzf}|{rG`D;*u+oe&s0cJyEI;3z)OZn&n_q zR5Xb0xQjkC@3A$N0hSD~BQ@(?z@!2zYQRo&aO@bDYN@ge9+D~6Y`&4v)YP;j)9E8* z@7$+rE`5gq6Xn~TEz+zQhXX7@(&42R(Q$ZOBgl9-9m!B;AX){+Lg}7(NIn0n*8W%c zay( z!~rSeGx@xXRO!|J#4!MR&4(AW+sui{G%F5@<%3I2I}8lRIc2Np%B=4{TA28X^>6r zB~hrw6ks_ft6goQh&TfVo!hM&D>h0&K0ty*=2WsasYPD^z@N4IBbtM!%|1l z$Th4fMx<|Y3b^^}<1L?~=?weesy8!K;@#q^TjP6XbrzQ6;MZrUQBQDgMH~As&t2MfL1eyfq?Tjupt2N`9NqLZpp2Ie_ zz04mvXRgXScyu(%yhu{H>_x!Z07J83qZ4o|H(yHkB|`d4KNGqLQx`b?d8nc~mM6oiu&*B-Ae8TStn(f-tR zfKK~q4Cn^Xr~!1m&wX)Bs)!}6!O53n5Gv^}Uvd^V>uhE}>KPSVRG3 zWsxfIv!Oi5P(qnyGR|xya0`wAl3Sr?u<11<@?+~Gaz}WRb%7FSv{`U>wxb2%QU+ez zttNXaWJ4nG&9GO31PII{u8ZDu5U8P{DC^bsc!4qpbkHkVtZJZob#}5`z%x0oaha_q z!y%=(OxuQpd9YQzNV8G;JDFE=!=Kt_C4R0_9u(%p^Y z6LCpNWxvP4YunqenyQUW;{t6Y{QdpM@_8i+vIxhv)=mOK1CMcgt&4NGFvlx?~9!p=^4m^9)P%@CUKE>VM+T-VpDXB0!$)CrQP zS@}~h4{I7Pa(Ap6z^LP6itaJayr^*tJ)k*leU!wx?^-obGxnB-rY&i z8C+pZu^b_@H>?6Uz9YQ;lq9BoCnO{qU7-zS`bM7LO?YZjT#kYn=p+D;JBuv+M?h;4 zyb{Xh8VNQ1V<7}Y1Zq0;2xEM~dbdME=a{ry*<__f$n6Bj)EMVtzXIZGN(FnT@`*)W zwN}j%j(ul^ixc*$MQ;R!;9C(zCQWwK3BQWdj%Pxg!{0OV0Z6KA?rqXSuftGusJZRd5E@z2`y8lbufx9V2Jtc){-j zE?9cG(I)o4k{#K|4lT8}F;oe^7*;r$SzQL0aG4lvb(be<5uJ zmzLV19WUSVr0Gfrmc%Lr-?HyNFI?RezRheDlQQUYH4FJgfN8fh@~%B53EflarJykH z(U%~(jkwXfzMNRCrEhd=Ai=J)483uV@ffdNK7EMn<>BAHcR8_MwUHQ0mX001oS~7C zc_?U))wq__>^5Jqylk>bz2jR^-EAKs<*|M_QAk_}KR$BU4%}~6N1T1Ko(_79O_~j- zz(ex9zsMSWCG}O|!}{j>9TQJ1kTz)j#1gV*CH2u5n&0oPjU~|fy@XQ*#$i$E%fha- zlB3VUe%CfOri|{z&Ar|d@%kN4z_)MTwhc{r{3XQ{O-*@pYjxO&SzX|rd-eNwN9-Xo zZ{IO9;F+x<9B-x-wW=(C&bo+)A9(f*_vqX{)W$SnXS;|m$(&#%M972i66)hFMx$Ns zR>tMo^zm2S{@Mr~q1A#I@t}S>V7YE!oMa44P=%gtTl6jh9*h_50pzN({3XZ&xa;m* zMnvW(U{VTYK={NkAxg?Lr!$#L4|@gne~Q2_5}?ty?J*t_9>I#3KNU5kE19zru=NYH z==kpi?iz2dDK1yU400q=-J*hdzPl?{W3o7S4H2gHGUZHI(8jK=D89N$@DTS;}hEAa`MWm-MeGQ2SDc`Eu7-441)gHWD%+~x8684KpBm%G?DtzWt zy*unLBHGsREip6)b%rWg@uplBsg>Xr`#&RAkdup;g`0i? zm2Humy?v3&>nhh^#@86+vIatw8S(Bq{Wg8xOxY$m_shkt0;pEBYQFl;s*OK=k^^*O zqpPcNXz5aOv)S_6U9d?Iu7BU=nkpHaW{=!8u2X1Dol;Wg!gzt+F6}3CvCn4mBf+bZ z<47xfGpqiqeot{5IqdcIO+_~iH-Du1dwn@Nxf@z$UTvBu!Qu27!bbL&Ck3lcSJ{^k z%_&On_Ujr8Z}%ls^?2XCs?dLP0V+<}9oBXU@HFo@_cNJ!Rxn+;O^dA=6aa z_FOUDqsNcOGSEEf0nC>x1MoRZ1G?6dfIy3|dV9E_ei};2@8C0-_jQM^ghj^p5y;~q zm0(r}WETuj(J)T-=f7m)y~O$OjZL)H@%=pRC|6uDRQ{snr+-Aj6wK4!@le(gnt;8C z#Jr@f4Jz-O;&6G2!GDu*!L8nr^ZLbrpt_8@&WRhSgw_nF;gULWsB;rHJ0;km+%bP# zMY=_}g~%7hRqfcf+BvXFO_kR^;j|lPFKo@i%-Y!oFW9!L}=AvuGVj)24v+=CR-6_CrB*BaYX&4TPB@AXom)8v|O zIV8bWhnh=m0rS>)knFs?k-0^PGD55I3LC!#=U$JBN*}l~sPJXSNR_AU(djYqGaLQE z-pt_xyQ7nX?32o4C%b#fqocFjv_=di8yk+C96cdWrqSOT&tidQw*fywr<)6V`$V)L zMb|JQnn;3K@!iy7yuGcy_k|Nc>sPDVBeABxMODPm=&;Fb`+FyVkHQRYIQ6Ub_^Z6P zmQb{sA&o$ZX2#}f%t*wfBh=H=V~Gd?vLW|zn*Bm|toLb;`>w_n85!qt&0&OH5Ysfqf~RHoclCJjT&1y|z*MM3SKG!SsG zDq_;6;ZP!EEJf-gkhu{dsdWKwjsk9M4z4AICdV@1QiotgC!jTs4?`q#7X2EbOL+O8 z)|(EA&m8WmczDWlK>|MS@g%2P+;)UtzH2OTRguZfx!PM$Eo*1rwou^uPh4-u*^B+E zK(hr>5~OT&)8IUgJU<6#ZNlJ}w9IEh9Kia)z$O>NB4bxVG{m)}a5w)#!GIM*uXnTB zx1RWC$?2<2$dLNYj@LI!iYPa3u?UA6IAp*fBrGg94$L!r>G&BC!cp^#x_`%n;q{%y z#dwQ{@s*$I%tcqQn^FWETAj^TFXn@Z@bH9bY+3fdj;CSm%7ok5jTR13^FU70^Rf2k zR^|Ba=KhX0;+SOX<7N=)@B-O$;4{9eOp&5T73R^v`2)54CeGD+%_m9sbXsY`JC8{4 zv4C%0gWuc@4=_6|=j3gv8^ELa8f*ojRtc-zt z7g~f2A{MBoEU-rwS8Jj-^MxCI{v13%B2x5=M#xPJd>jWZ$p7sVLB%gtjBr+xXI|dd z;VX|jq?Z!-?1L-0>#moe|jM$!@()nNh|^56PsdYr98! z)VK9x;sJWke0F+g(Dpq$!|=ww(sO|4q^{5Rl@a|{e-L_fWvy3B+NCc7d97{g!Eb=D zpO0|!#!jnmC^s8^jE)`@L9V8yB?2V#%=NiC|5d1LSO`w{yr46`bU4;T^v(qHv5Ok3 zRBpZG@^BLb`XirZa;m()TqZX2IitDi9iw;}82HvTzO{!pCA_p>)ojW-Iy^1Q=hjyK zddTyvL7|X;GIilh!sokxBCp!ZW+)uB%yYkS$Z$8AK_8l(JbQIRCuBw zG;J2%NwL#-rN<(H37q!|<{IAM&lfjIw?S@U1bqF;+^O6=>-M^Zh7W=xXL8Kb9Zzs6MFj!3U}I` z3_Ut>XqT$EdVLO8y!kB!R(g3N}qz?Im{y{05UT5#>~RQ{gY zG3c&U$iBUSN5EI5`n#GNom2s#9X9%V-GO!F+>HDU4^OLC&|YwL3YvN-)mT8kq4WS} z@Nb6RDL(s6 zCEZ;-KIfr!1!~1wtd>^8GX<0>ArkMMjBW~p9f7#Ow-Njr4>39#RES5RPL75U!Ag)PLa+n)~Dd>0~R z4_3BxlG%ML*e7#k$#xd98vJ0RUbd?`Hf6m@fQ%=nN%qQY!Q z2_Zo;<9hTd0zg5O!H8e39KL9R13^`_%>!j_6kO)v;a_kwy8MqBUO#X7q@fA`H9*@biBs-$f>UYU35^m%(Ha5MNfgAWr!gR+Wb*p418fAYHrhtA|6S#hwDF! zAZg-KJO!;ydYnz&a>bZs`fplCZY=pPBM>C)tw`S+^G){0b{GJ5b9_ZLTk*L#@6XZk z@e7KNElCW&LqbE$JHxgu5lPW<3g-5*?;H6t;&#_VuWqXsFFK`snLd(2V2yf_qE{^_K_3mp z3Oc^Tf3(;y0WMmvXHy?fI2GCWY&I04sCxq$FV)u%!yhRz0g@wDt*TMJ#t=4k!*IdK zy7Rw`lTUzzi|lldGoiekIRv&TC-go5a$1|&#FdTnjD?CpMMFV|QLQK)C`R=2U%Oacn(cnjMiY8W51(q1-$>(63Y1oq zAQ5eK=?j;2={T;L?|FE|i|Mb##Uw(jO5LKJDEYgtMIV-8=f4=!B~OLkemZ!iPv-r% z;jH6iEP_{zQtkxrnWwfR!Ak&bs}Y4B`WsqOtk6mXPaD1gEpJx^OjS|z-~3P!+s1B+ z(IZ~|OwnrnhFa{?t_t3|y1^gubmEcQCvddHzlM%MihtAZ57XRipH{?RdV805nFDL|_jM;-}4uBJ8`}zGFrbly#ZY$@xDTIyKKFB;j=-zr>)Y5PEyH zhp_EXq2`;wVzIQoO}PBC5VJ{DdG)v6ZW(m|07hrw{=9jmNPdL|N?y1P?%3LIo2gSm zW&GX63crtRg?E%HW&o9fNu3R}4HWx;=1KZ?-t_G|CI;0_L3NcE7qpxLY!<%m8FRWOCEq`;ZMyiYu_v_YED#G4dm@ADGd)?P z>9{jiT?*vPQ7X$7>Dgi_tg!fax>*2c)Sh+O63NIgsB~{5#fxy+9gz$}fAX}1cA=}P z@I(^Z*Q$1ft=}WsQnHffV?PCAb^KONPmlTbpmEnCG-1S>PQE8ccU9D&aA5`j8d!_d zMKoQ54ppN2E3A`5DDfP2+F9*M!tBMv4|}M|YqS(l84G`Z^Yh(rx>oZlCE;6pY%db@ z%}*EG?bLjVeFYS@FE0;-IP7UJ@7wos)XNN12@JYD zq%=GGO%)dC>$3;gY#q36J~}{vW9md|kaJ|8Awu%y9L2uuG6&D*voFE9DIY0)%<~*q zw#!nU2)XeTzG5X54J&$`xj4iP5s>xc-@ck9gvODiLi$Kqjur%G&%E#4GZG>;x#T|F z@DIESVaFCI;ezmhCXyJj8+e_zq*Ch-NQ$nY$v|~1&KSp{j)1@1ZC@7W%F4`|fHTX2 zT3-di9hG=PvH%Mrr!iSkMi)J;g~facjkuUt=-}(L&H&y|x3_>|hych% za~;IJHS3cA`b9_I>IyRc)&)^RV*$8!IPJ}GkH8^e5-*N{tlFRE&4*6zAQ}RXJjS7n^i}RuO=6-pSP(>^iW{2A$iJ7uo;myr_s4q;bD} zqes>b@Jl?-DCtZ3q~vqZu3durd>)!C52~Fy9YUY5h+`rvISocuJa6|=m!Osg{-8Sp zvtJC7%fW!am!W_Qeb{A}44Y&9K8b=-g$b%6Mnl(H4n6gB6AW=y;(N zPBVi{;Biy&(r!*GYa0k8_x`!J#OJfK>uAwDu+wcHnpjG*TKNUg7}MwOV^GR(9%y>K z16DD;)V1wnypIYoQBhCXGz*?fle3i4^no+x08Mu-JcYM4o-?9L{XorZPv zI&HsJH1&{qKx_ZgeBP0X$Mq4rZ!O4*+_i?=)Xu(OvFR$U`&3o;#ivk?EzM8U z8b#5BBNIZRtYf_RXpj{Ww8c<;Z{Q%t09qnvq5p1u5S&JG{gL^uoW)sH@$`vFx(80m z-N4|3U6K&EBgDCCNJ2Y6Lb_Of`R+pXTdJSx02y|hcB@ZK*pw8$ZVfAUa&8EZ7Gf*m z(04eDsN@lP#G&M*kSyZ(b4FpPZHDLyEvA8BYeXq9K~4&$FF!Wjcmgx%eJ4c9VTknX zq$N_0{6QlwFs#{^peE=8&URQ(ORm023D(`!{*X{I`1MnML{g-kf4-Ifr1{3-Nlh)h zKlH=#3`|Zz;Tkw$T2({i{n3I zi;-w`xm>)3uM}k%;m`7w6ip+y`oHyDRos)0!gQ705=(EFlyG-BmM(IE+?bM$xiu#X z%c!%)Clg>`JU+6vj~zIlDpPk0CDV1$XH5%@&oZ)iN^xQP^uF)$H;{I-?}i-P58pd| z*SLvlaY#QS@rZ6Rf7<*MeB|#g-1q!Z-!&y!=dH+*os>uTk;DX_ zUf3uLrga2+?*SdUy`9#=c_$%WO`=NOQ}mT+ZD7?p#KgjqtLYd(wumKBBYQVST&u2F zTodQ>!?gqCEoWx{@Cu2P6s{YY#KRK3{$zFi6-ub$2AfZaZ{vHjGGUuA|2O{T<|FoB zB^1c!*Ax`FaU*P}Q~CtP4x9`Jl;%J7B<$U2D;N7Dsj2TxTwR#5t`=mNU!GPD&q*=O zWpLu9zH_OP|DT{wdVu8o(k|Tv1R9W0G`rN?a!cP#7aNH+Xf8x3#xppv*Yp|LALPBh zwe*C4;46*KW50}WIuvQQDH9$1BNJ+w_N77Gl!L}cEjKc8#(#VfrO%-o$+%W?$c+1w z53Dmv?zFLASj#@iCEvRYxC$jn>9EGP+C_pBe3FZ6ug zyK&xDL^(gMiP6X$@qTIas^OC$DJ7*M14C9!q>FD)uWJ7)*{fIA`#xJZUb&K&Woz8j zBpKtpe3wSFG+gcs|0-i+|NGw~@CSYFPrBV-ap1UoY!I!xMT_ohWfj{SCJ>@)Qcuat z6U3wc;FpZI7`$w4F#o>dKEC@eMXoSh5?WJkq1?~k)3=f&LxW4|Ij&B6wzb}6E#LkE zP(q(o2UF%Y=~8Wt0X(i}LVvW+<+ax1GMmW&Vd1rU&D;KKBglBLneVrO6#4v9rPwZz z5Oa4waIRzNYG?`PsbUn2)|8{zQT&0KQ*YNA*RS9&912KjzZ z-;>XEeN&QjX7-8wSxTQ^-`NP0@YC7EUdb54R#X0!Bj~R}mjRFg#OpLkO(MW$V{kHh zsS8-N#XO|`evG;e3Lud%3pcBd9tYpH+ih@s>0{@eTgiaI4WwkQY8>s{w8~k5V)l#c zPKQT$fh3X*=&$zcS6CmE?TX{%K?o-PVmkiUb#;-x@R@L~T?|IDK{G4%R|8wQP@Q{n zL`vj=w+mP|H0?!00tjg{$jl{zdlk(ds*iK-Ke~-#$r59uT#-1uF;2FaQC?W6$e9L< zv#Cc0E4@nT6Zw9yYQ2eB9yX^3hns-D38 z;nEaTANIT_Ue&S&aGyx2<5J7R>4YR$WX<~?`INi?Or3ur4F7}^{ssPVkc2q6)?$dx zohcbg`SXnyt2GASD6ibGt#Lf_Lo(z3FKkcCi(R2A66X8|ntm z^=Cl`xDlI#>?XA9t4~~i4AV*$&l<7VAhoz+mdEYB+}gJ1;_*9JALb}`t}o&|Iz9?{ zJ~wqH(uY*7DAv7cnwit%3#;iXPj{?HA-#2ronvvqtoPsnbz2e68`^)Oj}~1Lr?q-r z@96b&`EFa`P=)QCj`vF`Zlh=wle@>qCi53?T^`_)xJVc9OO9$22f&HN5N(weNPax% zD6-xnXD_G!%Ff+t&V~c4T8z4@3NOJQIF>b7>ZI&Goi_DpotiCqZko zlwV$mL4AX1IWj_~n|W$ei19{m#T3sQ1*Nf6Ni}(l>XUda4Bu@lm{YArmQ(N%mSa3W zDBK(<{>Zc+UcT)g_*xQ7sPgSym2R#+z<4YxoZ=I8u^m;|r{-1jBaCj90A#HPHF)3p z{}9dp1Hn*&6KLSZ#g_Z2=L(xkkyR6Lt8P`7=a_R-rDJRMikRs*qL8oAJ&z^Dq3t^D z=WSvFRSiV}Q||@`=nY(vrEI}+!wepG#^c$fS%EKZ*PRU%#y?KJ2wv7huA>8S!`_7^ zMgm64B>~{PSOSOI84*Uf&{SjHm6d>IeBDN`qIfL_QbhYt(iQNkhG3T`NKM!t(5FXN zWtAR!ejWeT5Ut=OFG3ew)+^xswM9ZK*?FwWE~EsfCD3ESg)X{|CF7PD{0`Sd-@}%J zO%7lgTkvJY)ibH&yy4_Bx?lf8q8ZpCZc0t!MxJkpk49;KJR#tS>sfIcbqp1t68VlY z!b-fN!&P=S5BJF2QZ;}2;E#o)Dr&q^KHtg${wH!xnr4l??3=_cicHm4-Hc>PmiO*J z;@vg&)Gjw1X9JnKV$h~T^CQtUSx(;W@{SwZoZ(k4Z!-pOqf?8f4M-QJj*`0gy5H{3 z`x4dT8{hQ&@pMr~h%@$Awn95af$=A%{lG8hpAM14dMs&~dN(E8K9XCU-)2Z)8xz;$yChJMl!ur4Eox- zW|O?~0(W>($#ge4$>}VUKdN1y+;`0hVa~BUA_xeOd=B9MeFp)%txj{lyvhn+Pkvo-B-(yYF#i+wJ2LvEI1rCB4QuoX_Q%qvIm-;n>KB)TI0iR~GQ`FG-lV2D58m7P>- zqa@-dZu;R_xn%Ek9_v_{C^>K?b5e62q@+>Y7I1N{9}YQpqe8#7J? zuvo}gwm24g`seH^MP&fz&dSJ+vniTs}6<%0f} z_iYa9knbzU&|j%wE~vT;e-BBq>nNprG^A^l*&@NaZ*nJg#63y)#@stW1EN9YuM7zP z*WK=;4RY#|QvKOjr=X3loMKj~H=3y69Eal{2PGeuzm6pm9Pxo zx!ML`+;=ZEjH08iTQ~g4&>DX1*0xR+=Ew1kD@2ggDMd!wV#2QQA zCiEXs$PoPVC~bC_Lw$}Gv&gr0KeuleT>BlFBQ%ZD*NoDy;$^8{xnD%)MZ|SR zOS&dWx@6-ub~-tBO`?D!lK!2ArNE`9NLhdS*y%-CHPocv+gg#9 z$==(n^Km4m6p73wEvJHpgl9Ouq@<+m1ILD#SO3BS-~m|IQ^0c9oE`i=dF!7>wHTKK z0*U`8rTrVRd+nbrlHZut|1RP;isAqIzBuwe*bov8&a?Tp6)hzrbIJE&MA+Vh#B&nK zrgvV!!TJS5)a2sqq>}DnC zeN-aIn(D$Iy+1$3vk2M3$GPZp@4_V?z+tYPR=#bx#UI9Xc(a+}G}QRonFIu9itxfE zi1bAgi0=n)w?_D5t_^uD+lF4Z!_1TYYJnz|Cet(q& zil3nOfxH2gA!#{$&wm;;d-d!m7ye%*f#PeQfSLwEF3?A86Wje&{eP7N-tFcGYI+^# zqB#95-Nb)X|Id=ZyZ?Xd2n)bgz+TMCQBhHCy}dZki9r1x&s-rnj7};0ohnw`0{hLK z-);641NYbqiS2`@e>Bq@R2X}CVw>&%N6WB-h5hdEE%r5B9q)Jn;GE9|L)K z6X$mtx~Z$+Gt(bqx5WhR!S#&-d{+8nxTciBJ-B>0!RMquM(7(H++#08?C1Y0D!6Bd z+Y%6`$3P?KTvpL9y;;uz(5n##G|CZ3ii0?ieY<74k#eEj|A&r4uMN8Okcsxus0TcR zqi)30=E%6)^T_O{^ulTlotwhUYW?^E)3E%({7MH6(_y5vNTYMiaZlX|xM)p8$h%gM)5 z!jYWqaSzJvTo;d004`Nt^khkYxawZ3b;V|%dbP_cORqtS-W%dbkA3Ra`N6UKH=9Mx z%In-W!}0z;%$QLKXtv+|`}ZZhPS32MlVLQnQIRRO>Hhdpg^B!aj?q$yqfV)3T~8Y4 zrcdm+K-che2^xY-4-6%RM7M`H2@YyfdOzEv+LP$&qn)iZWgCAg&W-JIMr!kzw}h7< zxhl}Y`w9Z*>FtWowd!4BOILqMc5RF*8+e-r2R*dh$}lz=>{{O$=v!pqE-n@p^(gj4 zcbao=E^05hxW=+c%O+RvcMcwp>@8aB)l2pC61R5IjNa$qFrcN}FTI9DXTRNiLn*YZ z?*3}$mh4FN^5+w^prF`kWu-_?u@i9(_LFCT8)!E3qeXgyhwDf5eo8IhI^M2l*W(k< zT-^#^;hkUW3kNAV2V4l~*ylTVlXrS*O{uFkvTN2(+;%7EuKs-uu!caQJRUab?N7@R zOrt~*a0#_MlM7964ZTGzNenhKG~axn+J%A@< z{Ini9n-WcThK}vPEJI5QJ#pX*(Ob%QP+ZZ(Um}cR(Sh={= z!>`aUCV2<3V~n3PxQ4Kw+7w;BEQj0DOjmoy`+?!zed)a-+PT5)L zNX`9VnJM@h{i|26cDA-I-ykDdg-15%&5^NPcF&AX7NvY%)ILy$17Wda^LxctBrE)HmsQg1KQ>_s(+* zoTh*mvCC1ZcBWVUd8(#Kuked$FaB;Bengv!3SLE^^+csXHj=lsfWRo=oixGZ9qssd zhi%irgy*SuOeQDB1B!NjUE(rYb7ai)Jls%&ddtdPp|4g7s^QRAW_{%Id28#^vcpWP z*@FnFW_}(`F9o-qX(I%rdpVz-%0blaL><~0(Q`2(YU0G$_wQ2L^t!lQ!i9D!|3NlN z-Ya0{4_q6lAt15K`Q|Y-&178adO$Runzb+#kKjBxbRx zTK)X!)X5LtE~77@`Kxf1$x>qqKH4)U_5?&GGEWl6|Smhst!E)CPep;OFAP= zaQX+WLqn5h%T}5zg=cg3N$tOr7&Q6dps_7|gcKmEMW^}UC&02U(-TtBaJmwDNMtMA zVi~Ql;i@ncm?F2BNDmbjvX8kvRF5ifv~PwzGhNVx)0VXyd6S6?x@<6F5VZ!3p>(!) zrHl$^=X}#L=E^9T5&}j=+>uOZ(ZfoUMU(ar)t?FLpN8_x?x2;k>lwg_=X}2N$cB3+ zs0|wK^?8;9V=WvBvi*NQzkAZvb)mYjtuCu#r|q{H_|xj=Y<3Y{V0@hL0#BTjS5R3Y zb9MZNj|`z4Z@orEo^|L@0U6CdTHS))=bwB4^4L65m0VWSJTBQ6aHBe1y5)!$Xnu=D zNk!8~>uOXSC}k1$^y$;N5$er|@^vA37mbhZT^oq*Xmdz+zV-&4;0pr}ms&7>Ki5`A zFr+;5aXo{z=4d5%+nLwUNN2l$H}>a`d}1i5$SnJ0V(OqS@=8iB?(RAPOM>*5gZSF_ z1Q_oRMD_KNmMqA*|6So{1m6&UF8bf*!X^6uZ}!ZNCL{=~3CqDeQ@fljnkd+b+?fCn zKMO~Fg__FgtkSJ1A~mJ}{#tA|DS9G`49wS1q~f<_=eudu2Jp0|Ry`WSWsW&8s4M_} zWJKILf?Cin-?R9(2o&o6BNf7Cg_5r)imM6FucvH2O3Y+?rs?3(mH*meya=nJI*s)7^!4?% zwKah5sDwDIm*HkQsKr>_6Ej2}ugDK;e-VAJB<9?&t|@CW|8`VzuAS5TanYpxbO42{ zV#U66x!tH)c7Cy*Lu=NHIw?Zv2|SitvlV)bR(n8AO4GQrxV{XJ=&Qswq4h$I*gKE9}T%e?-ASNgEJ^A6KIvk zqOUjRD3~`<2bJ$N>s((4ao{I_`)F=Qk@e<7YaG9Ux4wge!$x)u- zqQ^`3cAZfvIWi??ogITmcXyVV=n@wB}})K|Mnwozk83Z)xNnu@?9v^ zh^F`4{6ZTO+{-At;c55Z_atf>I6tB}aqd5Qq)}A4!wMZuPkRMYYaa;GoJ&paqT&QW zBCJtL%H^F6p(f>5&fSuj`(Mozp`%d=9?#8SV)6&;Y^M_e@1=g_ z7+CU~j}U+FJZ6#$GF}ELw;#U|H|so}P(aMH>7$c5>kpj7A8~tUfz4zey%< z3Ji?{^unA;`%YF!uxFC^v%hWfGImJCS=ICIgL#k=e<9zpKkr4AgXxJo)zQ%okRb97 zJ2=p|3Sq?QujT{+$L#wIHf644S*kf*J*iJ{cgOO6HpK^wjxVE8rw6*wno3AIB6l$t z)^Xl-as+Kfq2f|@+W1&>_(m*Y>wVbd{ppY$NmE0-?x)(s*r6` z?W*EE5d@-7M&=8eW~km!^k~i)I!aAp(5GxkULAbT5Se(CY&~AxG%;H!6-q4+7lo}k zi}z8$y&0hgYg~p<{0PQQ9l7<{l~!L2G*eEYKtfVIQY?;xS2MzC-7EMgrSUzF$@FOz zb}N+|`CN6NNSh^>rFFsHDY$4X>Gp2j@UZqm8%Z)b+w;HMhD-I==%=TrfrV)*76B*C;itx3b zC{+R;%lSjb2OUnD)f4Xx$a>Z@4PLMm7qcJkGv%tW^azLbY!Y83j{6nyTvkyrGAo4Q z6UNu)@ABi^6e2L~e=}2ck>kKoyTZ2cbZ<8Npd6&{FG?CjdqQ<_TT62h!=p{zf!+1z zrZ;rU^6Hc+RN-8+AvXq3E4Q-~@3XUyl|{li?T|wJB> zfI9E=w84w0t<}4HxqG>I$F%#cyTjquD=1CG9PUX6Y&K6lj&M~|K05nBry#utULbzt z2PtDS?Gr!KP0ef zDd@9W?vx8xuUH*=qh`U1klALmj9*jcl-n-FdZKoCEj%zVqMf5gFFjw4YxLu$SyxP7 zpBh-)Dh(sv2Lg*Se)xn}ZLiBJiZD-lV#=!Y5zNcOB{`+9hue_)n1|4E>!B|bo;Cqj z<-NR8I!@d_9*yV_NO-4s6{;E*YL#nMqnB)o)&fIAc|y{xu6;$^msO5#s;?OUK*SSk z$N3h7qj}=GxcJ}K-#NDrbDdmO6rVu9Azna^(NR;INlT|x`1 z8RWvQQE*N~-9g^bi;Q+j3=p zbCCS2@V$g|^Cv`w^~6hZA+cO@yP&`~k|})oXCIS=qOK@rnLc={^hb>@{^ia&TZN=s z`RF;Rhy?|Omcdo+!8s5dR~JzHhMM{0oEXlUf~k++t^D>@UBBMH&qzKtgI57b7j#-; zW^xhgUT=#@r|D{m;6xtQ{!(Yym^SJcW6RvV%oLB2Cr8DV_W7Bq>{ajUX?{BWy2UTx z#H_AUwoD(yXO#%s^*(CV>joYwtif}U2MGV)-lbDAao{;=&%&IHjta*1?GcN9sSw#0 z#W-2?eTnp!mKZwuaOzn?a+D&*oDc{@u1t68-8ypY zL-TaN@0=li_0L+!N(SSTEtg?`VLk_4e;ZHdIdl7>ZjLRkfal|9z^E|Z#67c8QR#jm zaz~}yX56y_E(bOzFA8;>hmkg`T<60R!G%;z{Z{u|7D89oVWwFw$sSP&QS9%DvW8FE zaABR@-Rf9};`wmzWq;#F)e`bT)Anq_sCf6GiN(Sm+N)o`s&{&;KC;o%T!CvwrazJN zcz~@=n-~yR(gp+pTMtj#PiuuQx3*VQsC&H*^!I}@gC z9H*zLaf<%(>!EhJNt);31TQc+$~JqmR$Cp8wP9IG#&Zw6>|z(R9v{W@&IeoBMgdp4`%%^9V$1m}2vK782`N94*0?VugWg8F44J<~ zG0K((4alvC@8>WLfn)d}$>2J9ouQUYpvnCFXn4-~10rH)*mCaY=B>H)-|NDs7-;vY zmc-QOxvvy0j=LKV%G+d>qG^<2thps|@#|EBaF#OLO}6EB{*gvp-IW5%8{pXn@OzWqn&)$25~H(ge0bPJ&OsMz~$f`B}AbcI~sIzw{>yw==zJ87h7Y4iy!ZfG(YZ{JSpJla_FcLd_SvcHL57 z|E8yLhRK=T6H%Ydi_h2k-q<*gAZs_N813WtcvSK8w#Zcjg3E&iIu`KD2-NmegGno@ zo!@WuxWwtoE!XR@tg41IcDzNO z&AQpHIHl^}3pq0wLx=_i6B{dq%<<<73X1Y?e$WdQNvDF|EHXzYaPRkT+=&5Vwd5m;Vx{OkY z-9(-#cqQ%IG`Plu5q-CvESF4y3;&$R39kp6y`!n*!8I7URRnY{!!HxW?T$Z~3`b2e zFdX^7=v)P53Ysw~<3jU&y(kXe%5^2g$gle3G(X#~Xzc>D#`#BHxs}Zqv+tCYb8u(2 z`>k3Gy*apW=kkC}yI^N`RNNF+AD14pSFt3pR2V*qoV{#zCC}OFEV3+LbL3=y@l4da zC<$yC;vZQrM+F3&DXAyABxkD3G8Vg{Y_*Hske3nUuxqgJl9FPR;humfuO$#_^qN@W zLU2t1Pk0tefa37BI4$K-jD&W-|P7TwuN(Zi{51`0!$&?;`L4duziPZ@AoB{;!GZ7BX`GASEH|E{Qy zXS~y#xsnb{hJ0OYXIP+Gzx0}=c9SRUF~8vru~Fk9`en5T3iuTc>*w_zkqh31&6H^6 z>eKinVPxznu>z8v<{Z*HU8`KHf@3sI}n|c>@o#+IY6Jt`piverkXv^CC;`gXeZD z)NHEig-PZIw;f8b>56Tnq-4CdlxnD@Re24%^{8sTivVbM4{oC&04Zb?MZY`cb}bKr z2x_5+Zr;q2dYX>Gr0n8hs<}xPTHVAn_8IVea-IFk?k2!+(8Ft1>k$gr*G~WXE4S4S|#6* z^9vx-TG^D)hm9AS{Zb=nbbhI~I7=t6CR#H7#r`HGubY1r+<+nNs|*4E`I%L`yO$uW z?=sUt1aMuqcC|jTVqO~FXr|E|tgSc}wRqe!nW&_y+5^q-o8q4oZIOtPi;V5G@px2& zL;yEZ>~-VpPm@8SMM_YfS9|wBF3O#6UyyOfCq2v=n!e1dB6Ryp7&Ae78h;qNGp_R_ zL(K80SZs}Dtkxdo7apGvmlDbAB{og`#Jjg`&yX^Y@RgrbZgrLXl9Xgk$zvoFDW*xV zta*C$UZh1|4f541doh-Se6>zdUXic<876*t`F+PW37z4yryzrv{dwE2a-y+3g6da& zWCMD9?GU;>2bP@ZQepETjF^!B#QBN{%$nxMU_QJ6p6?B%n%-;UhJ_iz&eA%LH{^Fk zJggtt_HYrqC~6q2Ee?{7dwz`U zw;R%;^*p>B&;2U1>WXYe7;^IXl$}a=KQAB-4sDw-XIcN6wrBTL%-q}?9cyA{DmQsv zQ~HbR#mKDcxxrnw)y=BncqMtUn`b&mH4qGbIbnzq9GtW$3m#SlGh0-Q z5Kuj>>;)XoH3o z#1ZY_X8rD!p;S>ZmowhSN2L1w#NDhk zoJcu%%WiO(h!K%P^$nECI=$@DS)4wAzW>BCKv%hnzwABl47Ty0-+44YFU6yt(NVL> zlXu2d7QST zx~D-&MBeik4ek|v=QLbD!PKLZQvtIun250+O05Flitoje@cBThjqF~YuRI6cOMI98 zGr@-i=JBhP(;h!-&J1|JERl+MF!&G|SY346En8FwR2i@m*xz%Ui)u&kz4{5_0H!}3 zqf>azH*_}xq#lIo4!q3YKV+!mr*d`r25mq%&S5GH`4EmBy_~IZdGc1>UOiOfD2tsF z#1Nqbyo^ZekuORHo@TX_G8%&OL#;VUcZkOwGX!S!!tcR0`DXmz1;pRV?loMtUn8u0 zF*89x$KULak1qn%M|^Q#Z<3WPg1@Sh?wyQht;g&{_vPs~>pgjR;%(R-2Zz0!1g9$u`Ijqc^3vbh9m+i2ySdIq6#yXYJ^bX-p$10juA>OpG}?9!!L&NMC(ZrOm z&O|*g)01O7dm%>pI5VsoSfYr--M%dZ0U;*kT3i6`IJc9{soR*2g$Bgw|N>^D9)zm*yh&ww`oT-73dljR8f~ze*Y#@7?YAmPqtt*)d+Y!Fk@VhfUL| z!4PvK*y8%~+~A~O;YUJQ=k6emq=>2^!9`ba)&l;;SR$nqXaj>;gi;QvgE=8%wV`B& zQ*eU27>YaG6^$tZ&kuW$1u7|LTD@I*Iw)AVDlvGw5|eT#s?@pUl-s=AoycRMzNcZu zpbixkKH;4)H6e&M$QKozjNLNUD0rSJp0Lt{AU8KOeU?gPsy|is;KBJmFF`&l4QK9^ zEv2thHOYC{#SpoL)1F0$bVjDs8DvPMi(uj^a8oD@9AbH24{1^H*;*EvxI;%m4g`6r zOo+@g6DQ%chQ~F%Y*z~S#GI%KiISChapx!4iwaQZ0IBrId})k41Gf?=5Z4w4<^|uR5$6FR586 zhr5@yfa$W?l-xU+ev(?zlaIHz0uu8tX42-w=QHmuT1NE2^Hn7a*#a*MeiAe4;K70y zigysEj3z5nhbXZQ-rfc6<|NUSv+>tk-T7oO?*s|+1!?*l8=GnN-FK(Hbb}aJT?@qM zd+X<%&OSqiLPFISkZy}w{4uxpr@SYlMma@n>tDOebd{?PevX>XR5o|=8cX6u^w7eO zkIJnUUEH_h?ag$(U5_WUSEID7Zdkirt+uVLV#T)v zHGQz=7W3wxJD@QHWY}|)t!FDFSLm%!Fg>bzFStaR#p{h#1Y}0k4Po9VCNM4O*z^|vA{vq& z`Gg?5#%1*tz6_t&($sMh-8s`NW4&e3eS5kgB=E{~4o`!1MkB1cq1w6Bf2~@)#^BYA z5{h-8B!sSdk+HQy*m|>qbYIU&|0WITU_QQ6gx%;s=gvyV%}$%@iKa?fM8Xqok!RY2 zNzYSIk_cMu(-XvjXx1vln8%=>%h+?lq2s=i-VRbe!Ipf@S4%b<2z|eIL<{6)6VFtf zg7ZZePvLz9&Pl@q4Mrl-I&{*wL5q(45BEA$GfYln2E!6GWOKH(_fc1be3tga24V>` zfOc$lMtYgzk%V#rp)bgnK;*V+yiCR+hq(QVO@Nlpqhk2rkxyl>uPR1FSM|V+=o_?W z`QzS|_cPg-9CG~7$F!J7n@sU%8)_xWITloBb0$2Yk?-i0kNIb-ew8V0mceviMEZ?= zoVgH4G`8xb+N6(3D+ruEn^>9rU_h82DK5fmUD{QxW({FkM$dFD+jV0w6-7!tEM4AqY0&<;uCaUwl(lmf@g&n?zLUa zs=ry6*RX4M`ca7Xp|`3eXjqN1f}6pa7O&w1be9ZTp989*MCUv@?zhgC6RetG{A@C0 zTQxgjYHORoE&)cx>O{jBNT-VbM%IAv>qvjK7@VWs|7R*h02o}4#!^o^P{apt) zb09S&^CwwO!t1Zc9k0?CL*6wt%YMS3unw}F9I{5#A6T^Nm8^e;+@PXn z=tNSz8n_`qjw7)w{xQWF;b*mh^Fv=xuXfCS@;MJZqE~F0zKFwNLzJHXw3USs|1}ua z9o_Qfmlynt@t+o!+xy_6ESS~*WqNjfpD3n_0pW)RaTM7NI_{op zV^v}lG!NAU^&@)e;Y5d4echGDEE`ozC#ksk8>>`H>EAW=pd}yZL^@7y!-Vyp8_-Rr zZ)z$iD5NpZ5GFrbD$cj%eIl{gVK zi0P?%d3Bb^u6dkLnkRDtk!_j=mUXE9EMuqXuc_&PqAOpuG@mWmm(QRWxDUIT*2^BV z59~6p>`HkP07ni$2TriE0)2Q?s8dzj;w&~6yD;=+M%SKq%4W1Wx34*8adGtPC3=tF z;w<*sH_+UeQz!?a+(M_+C02A&YqQBD}+2b$}y}%klb5krDm#&is9U@Se+(#`U z{`B7W&T<2;^a>{L1uFVdS|;e^6K!aUl}Fst%>>yDij6H@$k%MS?ve^2=ViviQ5W8; zgDV%xH*h3!XnRg-ADb537XD)S-F3TWI+f$+*8hOxqI~*k9plhktXL- z!X2LavktwwEpJTGLn|DBe9IZ=$<=X!o*^7F-9rY6dVbJMmG=AS?+G~qG3*!z*k^s{~C|xXesoI z^mtUwahC7bE~p+_l$Pog3IgfUsN#XG)Xfkji`_=_WXlKTNlv$zndJnEFMc}=Yq+h zoH&`8=xnpjkucnKs`R~rtz1qetdEkm>|Mh??&c#^hh@rb!Knf(eLWb)rr5pLgXdP! z_36EmE}mX`7Auikbu*HN%2{%;9gcyBl$S*$#RG&aL0;arwqdm=Kikc&(CHgX=G^H) zw}|Ly%ki|V7k!4LuZpSVYmA?U#$JY751bJ})HUXUAXKC~F%2S{OE&^DoUHrJm@9!&+SJ6+VA@ykWL zVN0d@$4IEx1b~KDAJuTK@`)Gh`|%E0KJN_}i$yY)xJ11N?#tuK4JSDfRI2vKZ13*w zx)xqUlqmI{W65VwANQ$^$%_#Uh3TelqpUkC)z>IXc@KcTE7sG+EbDTc z8a1;z=$5>8hZ?^dLk{ip_p&ppeN5JEEO_u@wnU`J;!EWPEY@Eff{k>}**s?s4Xox< zxZOHZJ367MQ42#3T$tFvf~tF(u6C5l$}M_N*0@$&rWbsfr^?avS zi>-rCMD*8mQP&39c%0s7=GeHu8M=7@IUVSv&N{GnHr+s#tX=wrIOlU{voKFM$pdJY zPrkkBY9WX_=oLZy%Ry$k1fqtXF13`0s)8iL`L1-kT7s8~R9m#HsN9H1bj*!(cgNnp zd)EpA4My3E-Geg;E32^h-3+VL;b?qP8s2`%B=sF%jG6sHObo7>Zq7l~a`_X+L#+aq zg4(oj??qT+NBFMH$lqxt7z0?Ov_4fX{xX&BXu(d ze~Ro6e3}f)^z}s7R>=s+lP@R`>=n*R5#+$(r?j}NOwLx{lX zJkNuv<_7YU_h6is5u@pT1A@%fcqCTSwszSotSfaGew-h>=$YKidP!i=GbEZ$JS$l`Q7I5}s*KGir?=)UM=Afb|oDA_o zNJ*`>T|=X&2@7jnHzWN06U^2r440wlz0b5mlAxkuA+#Zq`mpKMudlkn3NWjbE(W$? z3f%6T(Z|i}k%xmAInbZasl*2my825zLzoZcC&s{<6$o6!+kst4=ix=RIbZW<#o z-}PkYWKjdC&elh&UPn(6j35{>zPO19ti|Z|85`cqJi&}LhT!`xv2rblg0m|zGiSDY zc6x)1a%`78HaZp+t@XZo-z1Yw1;Hqc_140!xcc8>rIGc1Pqo=NQ5BydZ;jqi$L&!d7#{}%*>d6_RJ#E#?Rji};7Qe~(J zS)*9#Hgjb-39zC^Knj8b{{4OZ9~x5sSM~le%0Knlpbq5h`{QrtpS*bS!rhGu(#D02 z8&ioNY>Zpk{pM~#PUCLexPjgNV1w*`^0a(*uq3U25#_LDqzVI^$iFyezYAqn1`qv< z$M*Z1HY{W7U)(tCH~(9TVg7|H13+)?G|S7&c!*1ox5`>tpML!ODF;BPTXk-bH#aFL z%+I`Exww?q5kuZ8nwVsQ@PUkuj?Oov)Bmdh;!^-7;Bys#DnMV*zs4Hjpm+Y`ThRKq z1i(uV$cT`OqTqj(;7+kR^fl5bpEPhZr+TbV>CJ< zf?ifu7H8KJ=k#B+P5Lb`lfMOkkr-;yC}O8@7SgsYtX9`)RoZn~Ya^|CV;@*B?)~uP z1ns{YZSgOH8K#a^Y3hmsB6gt?3#OkcUcq!y6h>nh>}mtlrO!d!YreYkV^=w1 z1wlyDic^U}c+58BH&3sQ=VwT27E1PhU_#n)ul^or}qk3#sW??2p<<9Ett< z9ej&kWHey=D9_{%MgWGF+>S4d+hNQRxVl=40k_Jro=dr&JsM8MLZRnWwKjz8zewcV zT=#4qULV)4Tv8vKkEmB1Dc`id+cvk|sHnD$CAfe&r3J>7HEN^3ac)LReSQ!Ba?j&I zGLb%I0@l{V)faQC$>gx8uEow^x) zzq+$iGHa^aKt-1U_mBngyrjLlFZJ3t=T7YEAD-CNK)+aPRpf@Rx&hE8O5_p3y^C=&_ zk;&{(P>$g|8>YWXG$$|T;uXXxi8#ANOq?$;0&oIU>e?aBB^OWf3zyW=V$-wC zb5b0f*YyP0+{@i5LsWO>8)@zuu9LTRxHgg4xu+<&ZB2DsS$;GJbK*A#8;o=&todf< zxjKJKW#qHDUunEmmfs#kMQF*VBp>?kt$K&@3L@hb;vYU$+UyPfR9$oh z9h4=f@S$qcic=vblzJcmfuM7%D1F`EnmYS0rt;@uAg)o85^ zWR(zx&n!b$FMcy6ko<{>zEk3IUSn~J)l66dHFgz}CwtHXqH5KZAF5@CR8dj2hC91g zQQA~Db=A3fh_M8)IuusVgT>?nL}qHOB^fm0ud8p6o;5tW z*-WPGGq~=iJA0S^e8oNQixI|H(l#jK3#efXzy9iAq_hyDjPmg76djk>nH`;lY&@C; zF;!4U6HHnZ1uq&@?GGp`SS~)_a#Trv{-KTf{~DM01hLJ}hHaHr{K>b=qPcb7Y9 zoSEyN^Vn(oKJV~QWE`O!4Me-v-&M>v@AY8XoHoMiY;*ovgQS`S4vq8kHnHiI}8(fA`FNXJEnF-B|VG?KY8eRPeul z*1@IlO%+m7QGku3|1478(W@h=@4V#c2+Hi zP3{1q(0}bvAI{^x!n=cIHuQ@ca>eM}@aW<>zd`}-oZCu{>No!F%O>(vSS0YBZSTkR zcf?Q~<(f_U{y)sU1yqz<|28~`ilTsp2n?YT0ssa~_ZIeeZv*Z@uq&SxeVAvhTg`-~Q#buf2D-%KoZgYP(jMqR~og zh|sLH3qd|G;eR5HfWO`V(dNx9ZMv7MW^!Uy=HUAg-(R%XdULVOMtJVD62-~k zt`ZKOE0a6(0Ze>p%3CzH?whb%w^wl~*4C~>!IWs)BDas;xhh@FWnDJpp zr@HTH9pc5*2)vkE7LBlWoNJxi_9y1Y#IG}*39fTjx#(9UOV`G08YaH<@lT!iY3?13 zeX5T(+BZ-SN;Oc(M@zMB)6x4<| z194M6=Z*9Ve$B0K1`C-9Y3lv-hnJYefc3KFk>{i^ro@)RZbj$hIh^5)QhNE%$A-y--X^7BuCY6fW0Y3WxQARKjbU4ydeLl|d&LfaINy1%Hd#k_o5|L+rq$Lw>TWNu`FoeA zEw`wdEpS6jvmGVG+2u9JFb5Ev(dK&36qymnURHy!>lT!^h*1!H(xMcDVHEb}+?)kh zd+c1(oqxpyzypGaE?jxD{PJZ(%X>cV=8CIay>s2TTki?x=YX8kZYH5)sAwJ3r*W)& zo_>K&&4@|q2TF73PL<1w5G`ZIYufSTjMlkBw5+A`&G##tJcG_tmGxk58=I$VC#EcPkXz1X6zAdka&9K2CJw@oG38`t5}OJzwnmq-WhbD@5*7)5m0TO?al2r z;P9C8NtuWS0zWft=o)Doc|^O_@Vp#X^?W_IqOTh)c&<|j@4U34)`kpBPSfwaEOxz% z{qSzuhvurdr!${chC(Cd--ukibKaEKtLni~n}WOSwl?;mh~{zgowPaS(8ajknH9#N zqD{(cu{hl4wfo}ikn+MnC;KJw;1dPMnL-Bx_@p-UI@y&h=IR&L7MRO|^c5k0>ntZ=c$Gn_%d)4ApyuD}{$_2b^&7fIK` zUoc9j$EJ0RQ-$$`#k4#=H8vXV>%S}gwxp%Sr49-sV4YwU>x`LdVQt}=SQ}sh^h^>{ zR~`T#J_8sLRigUA-ttp-XQRx>%F3C*G-KCim!=O|)OGm=+Z)Nl$bbY)6Np*Sz%+WH zF`*prPCPvD!8D2a4g}1bL_RL?3$T6fr;@{A=qF`E3tK zXZ(DT^XrSj2{DyR5o5S72fM+*a6pcjhCo07^#gY5_3XkGnv}jz36;+NA{6UYY&-)o zl|SB=i8Z7bUlr*gdoXnCNo0g_y0-*6ko3DPyZs4o&s25N>po z(Eh>CO7<1p#$0>4Xr1#~N!kn*=MhAVY=K%nZJjYe@oL;AkAP3Z7$B z$|{$RDVz@ykz;W*_Y0T`n{zZAplF>t`iB7!aPG)r8(4beXw?@t*lu=A0< zu0)H~d>$pAcw9uXg}nsG^X# z|8pQBB!(_{Bn4;nw8G~yPC!1K08k)I0OUoOddLi0lQ#_Ag%!{3CV;Op$nLG9+X&!V$_`chL)?>gm zF^L1$x^l(6gW~F3qpT`VK2@%VwkgW0<{o<5D5LB~Z4bvFdr3G7+GUz$9;e2Y=*FdO zq_u~-%*m|G@X1_%jkYOfTMl6KIusYK1bOq8DJy)qrm(ouDH9bQ^V~MMDP|*e8wphh4Rq|!W z>l52chpS3`c|Hhz&-JiF``uvcKI$lU$ra0v%=(b+wEVFQOKS^ctfI^U$~+JGt)UHZ zdqLbCYVs@=(*72hO(28ta=${!Ng~Z;yErNrWi-Rd#?X{`X`g9&aOxR;ll^yd-P~1w zV*UC;K*s+FF5YP>jeGtb!4i~WB67HGILvQr%){1l3!C z@kLNLW3L|>lu6)ty$AMkq>U3bPTS~TcP|l46z6CMVhOXjC_9wVd2Uw}K%cf2M0{5qWQ?OOS+^n8ix{?Zle0gv2L8X~KF8 ze*1(i63bv{Q+|6x#zUIJZKXK#P$DuR12{iRZlVqyS2;CDVS;3pweyYrGKqX|bIuC#l!z@uifD$G5*U2K2IIAGpc?R~I4Uz|D4W`!D!6zTg!!}l{gw)+984x5*^n5kV}lF*b`vbMv79JdE771PFxm6n+F@aT z=ea((05`J!!ar(3mEh3nYkwk4ArZ4H=qRtsm2FeJJuWGnMSE8VI7tB}q-O|v`>Cpq*9s*$;dt5$|IJ2=5UIxpg; zBh=uo!BERZd5-L*Z$JNby$BVY&#CS0Ifx>qmX5Ylt>?Oh2ZxYwQE)YrmFU?9ew`(A^}ilst!^z@2aY}(q7%=*49SWUMqD3`K(Uqf4rcqy%* zx;yW`!=d2-96%LjvV?&gc1gm@HYP4EySA2pN&7men&9G%!;EIz1%zH%CsZ|!6<04d zbb)W-=LFbsX=>~{B#$907uyDqGWNfo0zj66Bv=NvaVyN-^F#^@IRWe)&Hlthq;fu5 zfe|L|10Nkr%NF4$(WL~p_;j@Y_Qb!1=;j%@&k>mfjPcp544Z6Sq{!uNX~Q2cGC#Rx z(q_TO3K4YJkZL zzVS!>Cm;HEx!{g6ua_{21A%o=U&37x@epXU`;!_^YFT=V?>+Z=2LQd)!X(t2pmRgy@(sBDc zj{Kf#>02A=LiuaH$Qc_um|8gw-kUI{TJ1gEo?8%bvQIT~2HnGKmHjiTYaZk@Jh|m= zZxo_ru-a4dCXA()@-5D0zXGeO5dvpTk=;B-2U?;?x$NcbK(~Q#ex|vtL8oegAVd0rgLr4bU0
HWiCxh72rd(+5Z3}sjYf90NYGkkBucsmR8avxFjU9-~ zRV|ZWO+KT-g`A9N!m@g1>VpLHr3Y#wWXRaO46T)i&LBr1RsSQ|kCVhoZJzI|U?Wr` z0fsF;78^PJOlz*Lp>5lZG9Bi`ZmLOX6o4&w>x`H?TCofqRb%cdDK7k=^GNu78__%2 z|6Z%V&i)7bkloa>so<3f`FR%HA&xb(cL8>Hrovu0O&xYH=3D(?4 z8_4bxOMcKK*;(_Yfq=L?Pr#a7j3V={vEd0f~0dQ&V76IvWZpWZ9dD;(^ z_OD`$XBaCrxj^)q*&Hf)*-906c7)RI_1u*!X2`e^IKw?<<7icKP~%z0 zVVQ$13e-Nc*QC3PfLVg}qz#9VH5R_nI9ThKagGb zg3%srW|b#&(!PB?*u9jdb=%EJp$oyb)BufsVNU?MedCO7tkhimEJ4KForyH$?%~O4 zNa6_Gs6#iE*geS$YNvx(?E+T{TsNaK0$=vJ`svI(Ii_M6n7)-a-Wxj@PJT-G@=#76 zOF0B8BiR>QdY^9x#X$0L)%^)b<@(uv*RY#y_N8+(GUZfFBU(4FIp|eu%}({#1WUUD zmv?#QllE#m?ULw&bPUhFumLFZ%|-ME9ljED~PZHx%i&gE%^Wj&11N}!f8HZ*0|_5X&F3F>YvT)4IEz; zO3W+In;PlnrPE%BO<3Yxu>F2Dsvi#s1_^v>tnqd) ztAm?rZFSFEgkeo|be4d9d5Nx5oTH;d-E-z5Gn}+hf$Y^&?M`OhiwAA~U6A>&UGa zdQo%a4nDzdKEA|2e;5(}KH7TcxR~kJE|Egiid)+<@O`ygBa9Q{e7vC$JuAK;?quIs z5qKf3Q9v-TG=5HF&cZCo(`QZjgsQGHPCf+O-T)r5bdaFd*PHL~7Rb^X1NB8Pry66j zS&Xy#8||4?$!P9EHb_LG0v;@0G>#L0=qjhpPF2?L;3LP%5L`3S&g z&vxANdZwe--_(%%D>7-nLYho_K`ydQ7p%=OgIsgmS(u8H)wieyd@JU(4gTL#x^d=w z2{pN8MOn04g2v*&KCxxiRSuG-FfEiHs^Rrp=nyh93Zjo2+(i}a1b8aUBKP4xNiL8g zIWuqa;k&1P%MDhnaL@}G0a6TKakSe&2Gq&~=_4rlHKojHKN@h4KsN2=4oLeSR1BPH zN7UZOB`;BeAnFNtS?2$3(Vf@vdSi(yGV7W#Dlq+WO^LB6c25n3!Ts~5xy(+Z7UM6} zWaZPiF2&Fj!0$B;lU;(8u;omwF7yW_T`h+qU4gRq%$Nt~-wm4{ybP349FjKlc74{w zrvqM6%F_aGEDp_S@r@yJBSSveSQG*8d1lmyS!gc%e#BGFCuOe`iBn>^s`=0c9};5B zJ{g&riwG`VV98w#$YSB#f7dhti07a7+-g`a@u!K2Y(n?k~-$NcYT!%3v>v`ZAUhCv0L~PQ8qn?M4M3lVu@aq&Bnvl z?n=>2k2=?vp5wJ`_sTHztG_ilGv%h>5w+pLFo$)>$aGKL(H4=M{{L_MWtaIvQCS)Y z^cNRks^C9Z3=NB?Pl+CoguGV#BJY+Gn|{1D^37&34I16=C<1KwTulHUI#*NtK7YWb zhf%9CtK*Zd?TO$cSl-?b;{ed+{{V)uDI4`DBllRqLJnBUxI@*gtEIJ%=gQDC+9#cw{bAo^M6DDP3<)`HAYHul(F1@>!I2E#O=H?G2cnP5nz-0yD0=ZfGQSx z8Q48JsqiP*f zN^1%g&6W6)vhypHt`RZI%Y2b=nsCWZ?lD2J;QUoV78E^(m85b?7$YS6d?oZ^*9Psn zXP55Yot9j)c!qEBx& z`d^SGja|ZXontqRzbUY6G?SLx^`&}Qb@gs>ZLtAJ%%k=Vr$qpk*BF&&b4O=q|N44C zE>nW`n{VQs2|NKzVxj(*w5Odb%i5fIk0>(jF9 zePnYT#3Ru-Ia3E9PP}*_qCd(lF9Bi~!2s_FmCK)phql;U$G;&~W^w}Lr3EAy5+RZp z)PkboXIQM3e738{Hd!v`ZZe{9#JWPuZjKQF6WApjbL<Z@ z5D0``evd||-E|iqCve(DDt*vWdc{k|2O;CnMcJ65^Y}6Y+jw5|6OiA&Dxre~0{;9J z0riOm@xv2Vkc<;`O)3`{DxS6d2UKx5J#k%=)BoOySTX1KOqgp|53fuJp#B%6(l`Q6 zlsE2rG~n;gOSZNs2c4d*E3yo7K{qKa)}g9O^gl}R2GRV>T@VV6OaFzU;H#GYh>C-~ z;Y{su;$n>YrIR|m?ey!Y+Y)oA%_DNfM(jqq>kJa4JJ(HjMIXT5?pF#*j^Ox_H{t#k z)DVUEl={G$2cXeFTzmAm*ZbOhbDeQyE*QNrnYx*X)Lg%5$3S_*bK_`owc@}Au0qoMju9Dipm&bvU? zQ}OBUA|mTnLilZj%|q*ZOX`9dt0}{# zx|;v^YE}uj#kici^Njam~UVh zW?Yq=iPx_F>I!)nhSl(Aw^gy)vPs3p;pP=iDknN&()6~ZGQwr7+QIlTJ&B~;@Z2;% z!(0o%LjG}3|ACi)btWTj`^C*LwtPhXr`!3NoFq?}YM5^gc*2F@c8~JVZ=fP1Bd+mL(b4-?3Zt%W&bWS5BwvHtQ;Zh-KYI}`Zi73YC zvnn+6aNkTvLFg4W*)WGXGA8n6??#XAXc966Fr zNy5_|1waLTAAEwi5&Z}jCwFRysqglC+yy>k)>Q9FcoX9% zsIK$qqS?_!IfOL$=S=IGvY}RKp6U~+sJ(~4 zQJ*Zpb&I!@^_x=y-xl;czA9l7T(AFu!DE4@zo)H}W8%^aoSDrL!*$b$MMAaDWD(56 zQQW2SX=(%W2<;^`cphtpE(GWCIkJ5lGwaQiz*?*Z3pZluic1M?CXb-){rWJ|=9zjh zd+>r&l@F4$J$<%->74QU+R0W(B<8gA#WYA8(&+`zt_01SOUXy|qkn9_a0=*XV=+BP zkwm$58|@k6S=6KE9ZhweVYYlhh&`_=!8kH`w1ty~^>W?-DVgR)0!g*Aj^X2RxPd6` z-HH;E&RdLVWAj*J1^9Ps5}B9URCy5zvV4PgkXsgN_@w8g=*zkgn?j~|^%Mdc$A$Qx zKb{luEjRbhiH7t$USEvyakM1Up&%GMr<{4p6)`u9nyL6?KNT*?*p6?0vTok!owpW* z0#G<9dIYI!B^)kb1jb&*961e)`FACZ0dE!+J3v%}vdE4rzl`Rx9kzKxs@0Nej`xLQ|A@Ulc-CW?IRBg*=Cc^a!4vpNkp{ND@J z<{xmXiOhyR^KCzISdg6qozUSxo|)|()9*TwN^Fh`L#0^gm-yp@;QA^Ix8)B#lmzdS z`!eO*FZEWimbBk~UHYK0#eqRNJJxku!%5P-Dg|}rCa+f^W@E}9Ed%l!`qCGxW5o%b zEc=O!4DQjgPB!;{ntG9IwK~9BwVQ!~9Kn|747jkEb0RHRstbA5(51DRu3G_}NjYpD zFR09!B=AgRTicSwa>aPSc2ec{@&$0=7%D?h-eQArWjDouqTx-(W+&olv9IM4%mDZh z6R8EPKlk-xu`}T`o~IF|8Zlhl);%_AvJv^kV~nwP#|^=*z!JoS69g?PB=}Hr9Yg~@ zYcMl44DD|g{Kd=fOEc9j__A%h;ow z-iUr~oWjyiEN$X6n9CRR!g6gH(U|v{{h}Uj4=hmQV2xNoaHq z{tgp?T-#oYb24%I+>50G5Ip{jqP7|G#z<6r3?X*|N3!=B%tJCTI|Iw>x|aSj=99&5eTQJWjCoVSV{VzwLp&C8e_@5_5=PY zhP*!Yj2|o32dTc6O|mmm%r5tY@v9TdMw*{q4}Sa7hyC(aNu{M=cATq%K>U*+tmx4* z?%MGRrQ&`?<(sJs9SmDbKYuLI2VD*z%HshKd}owBmJw0F6Jl`?4iExa0Gz>p+b9Py z_D5PCZHCt3k{^B9*V@L^!q=W^W!w}=R|=Fy_V3{Hm1PUX9S&B5fyJvoL}mT-;td$B zL=-bLzf0+Z{kvEK7g?=kyM?qjZ!sqN3wW;o&wBN5Ay^5I5{MF-T2uXsZ2R0yv=-Gj zR*2=d)u@ztxLvm`+{3h%15H27VNG5+;}>#n3F4+RB2~BM%~efnrLP@J8S<$sKxZXu zKzKp7a@Xt@gL#HaJh}?d+IK+HXYw2lS!_{RAECr}R8Pg0Q8p#5OoQL^h)YhyGJA2@Emxa6+7nfqlcKY3q4@z(s4;0aqJ5lA{0tiTD7${ z-<=RWyr?L@007$R=o_ z*o~Z)`=INYx|~VymG=-U8PPb1ej^Jg`pUls^wg_d!%FkbhCu4KS8`9C11`RY%B`{a57TTpjmm?sZJP3URjN)*~T?NE%xHHL>2b0Vw8zGb9+Wb4-ReRfU|Vn5=CT|O%MQv z_Z@J~IxK%E3zg^1-HtdbWxGBmzHN$AD9Pb?@G8<>piVy5b$74)xTy}o?71VPX}?IA z$@d)U@v|#)!#uz0KHQ-HFM#4mqi}HK^fIs<2U-IQM$Yg!=vu<18PTm#F-b=!m5907 zLqxFAQeE6T$eV$J*mqa;!Jr&~@Ai+fqf9P-Hs^Or@RtymFJ}L_;cT|-6X*FwQHC#F zS!+D{KzNKy;8@Y@YR)I-!)RN#3J3;YAa|N(bVB(xk@xg7GQ(Em#4dl%$$3nD>!=ss z%bmIohdV)f+I31#TVuW>A)8;RAl5UHZeEM(Pxvp zY$2uLd4xflvGX>UZ3$gCOp)-ms|#=4RA}C z_7jwpqCWyE7K9;-VaP`FXc2G!ntzT(M z3w)cwe%-mGlp%|#s<(}#x{qc7q=Py9{U1LFe7@&Nd$)4Nh9-Q?W?`@OsivxWmj4uF z`bTM_1p3hD`LV7s>@t3F4j*7X0H5(+#p0XgSpy?f^}ZcE`GGPK#4+p4smOr zwbKqNX6K8KROu$r*O|Z=6u77b<5!yP_r2TR^KF4?`jZbh2ErHiW#}sz3E@q zeqjipze~y4+RPol11gs(6CRxP;=P*2qtf@}kTB75cTE0t3%P!yK7DrUd)5 zZ%&0sdG6ZowCmc1ojYiA8>l>Nf2?ui^Y;|So?E$NtjQ5*Mo1d4rbP-6Z_d83hp}V} z5;h->`Zh{#xHuUDUV@}4-->{kjYwNAyChac24gl$|2f=2)gTFO_+W0DFma`xY_8c0 zyiAyW^CD7yLv^_Kc5n7bsbu- @{7?$ww3A+xhd<{OCa@A{ELy>T}*PTJmW^@BCdEq_CnEV^A6W2>cW^94|b~zTB&>iB&VomP2%b#lbh1nD>PI zoUU^^)p@0&7@@FF$0^)gO0c6ID1sW@$hvKDSO6vXQDQ5jV42i%lLsFY(f*trB>=hr zU?kI5HX%o~8s3L$_TnKD`}+-Q3yU(EuPC9JrzrcSG9GU9oZu*Z)J`p+3V-UePBKr` z0}*ZL+5k>bA1e?3ogfLuhrN;GvV5c5S&9iP)6og%Sb@$1`VRYy{`qdHYnu+X9?u;7 z`Bs7RtSThq;$qRL(hf6R8U&Zv&bo8mIg|7R+DYfIhzNb0pa9K(Yz-Y9+PAG_eU`GO zXjlc#ly{|B7&sm4Pl64u&1WTAx5{_o|MD z=TdMsWBB;;i2qZ&GPhWdDS(c@sAlZA0hpV9(T0bn3Nj7Rt$PRy%#cg+n?bft2z*Y@?QA5xjAtrk-cXz zBvfc#w5LP8$zTXc(K5_d_`bP=6x)a{(!}q0w4T*{lbxU46yRK~>L|Q@4VegZPc%-{ zyTpbZvL2m)(T3zY&eDgzp`-DwoKZYpEmK(aGtC-EQcX*v_ush}eCqnW=fkS`#|0SA zL);$zMoiuLN5CoI`S0@WYo#xlW2A}+H)VuDp6Od(V6>^%YoKh(<`bh?3nttz6&}~T z%)7oeF0vf|+R5)h=XI{zEVDZ+3J#?0OJo2==rxJ5Ia-4U7-jPPRG@lB75oqyyZF<5dE!d zr^H&m{;XtX1k?yfc%6|$sZhj_bOrco!|dx3QSR`1wX=5g)!^5H@PIC}rm>2ZO{;9GAktSDN6ZJn4AY#KQ=#)bx;xhYIy~&v_%~HXAY6-70wr z<$eEb1ueOxv^*<9&TpF{RRr8MjZ@`n(_F*T^h%niA5qxHsCx@CWY=D%uDoB?#Bv4V z`kyb?B%b3;A6|(|>)uyCa{mwiX==k+y?{>AMVw7UrbjLu+@`p$+9)(*=Y~*D!bq_`I1Lt5y zRu(IG=8E!yf$l<$HXsqq+VvlHG)N0eeKjx1(Bn)0)V{h{h*b|DOkoF7@eap6lAWH+ za4dmm(A|@<z8B4<-vsv{_yYM3#KDp)>NRW1Fe$>e8R zJxwPCQixs_g|vyxW1*hrk3K2AktZ19=WXn>qY3K+2u=H=y)A8BeQYt-Sr0rGLKP3~ z8=fNXIA+svW>rF;*C1|7cn60>Z`=Ug2A_RGzkK-AYrtySj)x8ey=ACX$+^a2HVyW} zr#j>fyY9|b64d6+Ka=2j#p{3Z5HZ}BT`3q0uuL+C$o|=U1p05X_t`H$D?^2-JuYqW z5`O|;k=UtD;swxuxB$g=<6LSb-eiy@hUDDiLWLRULfSmRnFN8$UhuP8^zf4Xw3&g#NYALAetZ~@&U(c!@v1UmU(g*0Hpr(ebV%^TmtX?ETzS{T zG1u8cc<>Ln`Af4;u8Kqp$^cIgp#7^K=;0PqaDlG+^0=>Gt$f=r$ynwz|-=Uj6S#iFA7FYD)D?ginD^BJ>Eg)jnHc}nDz z);S+Jvey5dfbYveTRH}&5>s?7|6U%mjbl-9 zwWa(I;GtK$P_zdi4nTbM7_t2045rBhYu9J3%>Y#J7pSvU@$X$es!=M-D;!L;z=FYy zJ$FP@6b#q{q0UE!@B3Y8;F^l?gOGb=^3=aopd@P`+o4%yhQD{&xc$D%rp9=$6OasW z=twyM$T9rLFojIN-uWbyuzsX?diNnHS`>eG{K<_g_sVkX*LJhh(i(7KxH@29I--H+ zJ~bYH0W6hj_gHecYo3J4X*wO3IRN`&C>+0Ueb>EwRceR(4Fr-!%*)RbXG= zdQ6jmbc(WbVzYXSa97-xr10?Yt5;^Z!T5?wQu5l?fivm%{P2i`+#$QWCOTiVt4JJ4{wC<9mX_`FbKe9e349fpQF*1Sl>aZxx@m4; zzz0WBc~KlqFhM8ST)SolW+x*F$}z*JAKakFvSO9P%5iw4 zX8X~no0@n8c%~*Mf_=saRMP3*E`p*3yf^-2|9DM4abFJQY9wY_0U(whHeF<`9c=>~ zR(nC*!|L)$od4|BwExD32e^n|EUIwD3(Xw04sq<3Zd%N|W%TG*D|2h(X>oa{$xO!! zv|Z@HIv^%g$}0QpDKI0&QedSVbz<33e0E$`1`%D9K`QL-aY5r zJjAgd_hphe?ykgujrtTSHnr0HEAP#$&Bcxl?Vfs3dEPi_@;nG#JsJ@#%oTlJe<9uzZgbYMaE;Ro@&nI8f{I zsr1CMxIf2@7v1!1>{P(j35%iu-e7YCx=DGJsbMUw{Em}#lIXP(cL%54NZhpUyQtMP z#**@?D*4edM$QjZYj*g{)g7S*?4Q@!7uOE=x8)uCjaJ*G9lJbNYjAcYW(rew#x|yC zwZeg;u%587VS!YeX+ShM4@J0dm`;gd~_IGWYy8IWkh)&gf&TU;RYyAP69ZQsSD!~YQoXSX+W$Gt-&g{TE?gbgo$hW-r&<|rfPXCv%iWbLDgQEs zlv)XV{7qP6aJWk`OcQb$luE8yH9<{CuN;vgfh_pSm`41NooaeDjyUV@9>E*vd-X9&Uz}R2a_9o>6H#R&bq*sLNVi8}sCTN!O zbyXsNH)5>HsX0UlCruo#_H=peExXzaw{5q9txlYo6#o2?ZqHqT&76)*E}P{yRi|H@ zpk+ylv_Ygci^Ol=gD!drToDA7i!)+1Z{_bqwoHq(_BL$g-q;%#nHapGqUk!y2$O~u zFx3Ud!Xt}j>01U8(Z#yjkWm`}tSes6raE0I!s08oRMrBcqwkHRqu^GbqZjT07yi|5 zFP`Quk5`P*a5Br~q`nkRh??>wD1lOxjXUP^p8nw50Uw8quBKaUu99}8`#EB*uO%h< z2FZFJAm~OGVA^gHbDgpD5=32L(wf#`_dQP@JpcN<|Dm*Rh1?iql<}r&QS+`g-se%5 ztrpN9gwepF6x^XD% zZxV$!L0yoLHW#1Eh;d5YshdyNVfo9YJ}vqpC)5m4%%vl5Kl~<~k0%94ztPLv?((sv zCdS&^B~HH5dlJCW9E|2Yb2OO~85P?e(-oX{PTSR6&q+sIx~(T9;_wrw-4CvpYS2C( zxa!3Q>e*P;UPQlj8?P%{9N?ns zEH>^O{4q~aeV8@V5j8Q#hdQ3Kvz==6^47b}c2PB~pe zc)zPASUf)}F({TFN7-v)D$eD(yJd-< zCf|woE>jw|Dur9~pL&r~f_g6|Ts*D`{)z7bw`_YAxAgG-L5dPB&%pfxg|IoxG{q|E zTery==Tkb>nQwI=djP#RXbo3|LXx67e8ZXCA*zM;NqD}qjGC49n~ARE5l?3s#4IEO zyuXr!nlKa8e4c~iB!=5B_NrU!k*$rhUc3%Uy$d<%y)WeeO^J>+0d{v)ADM`QZ8U+Tx?$-!4}O0k@}Z*n@Me7x;Gn{O)yp8!c>Jp=-^svS zZr#AYGDAFwcm4l?ekJTcfU3+e{4QOmt$YoDX>Ri2c zE$qveFNn&kr?|jd*&b}09tr^ICdL8oVLTxNFoA+*5qz$WTpmZ|FGWOP{Zf0%&7beT z$6OFssNZx#I09T7n@5gy1?2hb?SZ^hGo~ygC3~BPtJfs z{!e$%LhLou^0>Fmr9h#Isb;1fG>ep6jGccxzr`uInp+$iYd_UX z<|h%wlrYmAqaFn2e^gjl*tuy=E#z~(_lu2042N-SJdf*+T21c5v=NT`gbd1I*f={a zZ{1zv4Nqmf{qKae$9y+99#&MYAz@S>e*~mmVL%|}Zo4I4pd;H7$*4giMLzpj;#!^} z&j)XjX76jVr%_#9aNFGBrxgYrk(%O>OtcbrI~^j^*zX|a33doUAW__Zd`QKG&xX6+ z;?ROU-ZGEKT9Cbg^4C_L(&U3k!?m;b=v1k>1b)V(tZ^s$-NoMQaiDHG}q#UmXuma}QT` z#ZKON&wk(4szNEcpfU#x_tx)U-8ov1;IcDXe4}qn{A7~RSoHl_>1>w$BdGh(Lgs=f^H$+8(f?^gjQr)^vS<4N@Z>(x&mnMwP8(RwvO>5&WW7a6Abah+{ z7v3^%@o~sbn5ARn<^9%aYTOkcLN-#y+18iLFs2LwO-}gzri2E&VKMQZO|FY z1*_plZV8M%X5k?k+Pr|>sR4O;q*hWZ8w*EKzV|rn%sXI~uMHjT-697runU(YN!*LS z4(TnpBW_3)n+4w1#t1VAS9B%C^T_*m%k#VN@q=xz# zl|o*=l7t!3l9DxDx}f_ZBMxPLO}|X-;m$P}V$RS6U4wr){_+IMi>8GjhR#9mK zseb2DSL$AAh1hDBnRsd1F3W6^@L@Jx>}eeKXIiN1bdg}obeDErSlXv~t}^*ha?gay zaihdb$JH=HzypCO>Hc<*+2%LBQrpzEUaXPR-3pgYZmgr}`Bd`SGerIE$%zOQKAAL8 zmCxChrIc@ZIsmtETAsG} zM1h=KKcCfj?oLJ0bNMAc7Q5k>uE)b1&q5tJ93y~`O`2!EUQb~#(l6Dyq@DTW!sl#L zZ9KsezM5;+!MyuL1}(9Q<4fol@gOQrP8Dv48cp#CI_939o+674-k2wj<$UwCzKJ1H zr2WI6Re^M~wO4q{VDp14`%K8)7$G6n;o3)XB_AwQ>R!D^hi)k~ilhf=3F| zoBYVljXUEb^Z8u_zUqtmN>oKABEv1(_JZhwHwm*vr;TzAr+wgZ+0xit&N_*geyDR; z7aXElhYIZo=+vsi<9S_P&;(PM@-4by-*DB4g6?o3yXFHjr&ny~jq`YI+bnkn-8e%+ znhXXfwHe(q)lz~KvSmeTPtCmeI{W6dJ%?qIlRHQ1h&mD(9Z+ncfZnxzVEO)&&saN? zficVV!smu-bIp?zo&|NpP6F$x25r#q!(Ce(BEiCAjYYEzEirvC!`V$?8_36tz8^$W zfco=w$j|=wR^Nvei=3yx^Cv%`+LacUOo!4_&@X%K((>9yRr?Gk#xir*v98 z+F3<1ygFW?NfSh>JMV^PCY{J{nmFX{>ZA>6NUi9_gtn7}e{5w2U+^7|JN@F8CiDDh zxu#yQ6;VsP(2F%v=Eb6!s0Hdeal~L06W{cMvI{jk(%rxn@>7_K2at6D>$W0VjYB2) z2Hr#I1YX@5;k%5{mcpezQfkBN()zEC3@^>!ZhANyQN~~J^B5tfpYtd`IEKwVnQ*eC z{%HGJO-@Fc?f=8wTZc9M{eR;afJll83Q|f53{((gq|z?ZZboj@ zKnW>f^nel4F-9{QelOnf`FyYI`|t0%?(4qKUv5ms>%{Z^`|*g$3HC%^1|s zbU4K|(6o{4ax||5V*-__r#>71BxBK~8;gX(jDRD-9sI(-aC5YrF>vEXimUcfMh}M@ zw}@Gd?hG}XPkTZlZw9(G&G{D?6cno75izN->~TC^jDj|Ou>eNS*iW*u&uV z+`;WH4xTx=$aKc`3q zs80nPbMW44JR*d+u<>+VFCYJ9^keY;TU!e0q59Ltc*8-i&V$D?Ir|~d&dny0uI9ta zwMH1TPuGiDXu!d2g_(##uZauRl)95qK*Ew(#UUKV?5j29v!KLl4gDO?H{LY4Po5-Z z_bGz$X{+HPZ-z(Ts}|R_VkolfdiS_Tnwc6)lg%juInPaS@a{9zUyDJ7QaVxr*y|*7 z{x-qpP7!Kg^{G9li2M5M^v@r6ER7x&{fr^l1NiDnUZZeStbgREL_XdHUWh=t-)?D7 z(L9;-t}}dh)k+4jGAG1W;O6IkxZWLA{ObHj>~!H^OHs^o#A)>RtUK%u(1A^UG-%i&2x>w?pWZPalMlR#+qo_iDp zO`OzbcSGggAbJyauE0WDAt`pvEhW-$qpI4@Qo0e|&T8aGs=OVn2Gqz|E&Tns%p68V zU(T+-#-^K~*Rahb-=R&h$A8_Xzs#toPLF%&O*{!t+KV)Tmly67ZP6M%4Wiis;`&Q` zE%*o()mYwVaTM>|DOnt;TtL{n^=G%xh4P-;wPKgsJl!?@G8W_6kDV{mfIitc>%d*~ zjA(|vK|lv7@G8U4tdb}g4p5VMZE}7od7&l5RZ~t7zHQrMA?u+R5bt$1o9QjOdY_4# zKjwRrHPT>*OgO(-F%3xVen#HHBqse!M@P6!lnwfl-{cTOp!m71lc?Kf;K}A*pe*@$ zV|yu`*7WHgmAg_t`AqemQ^#M;yJNHgN?|Y!_Ef9T8cw_?dD`U6q|ROL(PySWzBnbJ zxN9(&W*l&S7&ocDcIQ)AWMeK6sBKkpmcSb?ss?y>rOy6$kPznM zs`L6-K`Z{+oyK+t$wCNR+y*7j47f+hiG@;zu%?bEZ6HDOrc*EDk51g~50u&1k(=&5 zhWd@`Q!!6i;TP4gMlc6%%Cx$PBbMX+edr#tDP&w*i>nfIO4!*?R~lY*w@=TOyg}2IvWm6}NJ^*eI@WjjZno1_V zGk!Of3@Mq&x8cPlWf0#3o$a0;y!kna;YCYw1I*DU5u(HS4@e74uLGf`OV_T;!BdhO zE#({~e$pC#e`UaMrdx)59b6R`%-MKJ5m-iDKTlzJ=c(t@9mLPkF(DSeP(JfHtW%RTCrfaYx#DE zhH9M%Rr_mvAP*$IukEnd`fCCH=rC}& zo?A*7XZW=I$iv5R6PTC*EZ~~yb&a(YrrWm{CJ30nXO)2I5?tzB+QS~p=Q(*EMBJ?0 z!hYu)8mKghlw_alKo)9&yQh1Zj2Av)_|H&%Q=;R>DzE^rW@hA)0JM%($u%(Oqh0h? zW2%Nbw*p=%*Jtl=h@WP2T_Q7G;&km~`*dkUMs`{T2J#`q5lH%*biqSO>rf4%*%j0* zS?g}*6*P@a9n}3il7W!7_e;6(e*pplku0%QZ1lR6%F%t1&=jeMON}<5as>ers>X@y zyGGgl&b`%T^BMZ3wlm6bosstuR7IJ@I!<8K1g9HgHv_FNX~J3cr{tuV66D&YF&VDn zRj*1U*cQ=A{)R-erbG3XmqL|)5r&CcJ+JXOO<{9BT7iDpMo~{Xf?6G>s;0=K8^Q+~ zFNJ#Ez}7F1pAwGkPmcXJ8g2Kzm(O;Bw2z*FnhOB-vS+bH@w0?CgZT`4;$rKzERb!k!)zIGb2Ae?FtZFh=`0jD*AllIKN?c_q2B_bH~Iw>PqU; z&mF^|nNp!wyJrnH==b0M{CSq~b|#Y}+r3_$F2Z`Fn4uas<~_bMHBLUeLO-qih)8KI z#gC)3Du10!T8OAG+8B1(c7p`8X7>&%ad?s(+a%3)jI@H>$FpU+qL(+_z!L^NV9IQ@ zI!?Y;t3Ork?TB!iw3kp7KiWMX88L+=lo;K;9_`{igLaT{(F-fvUxdZ5v0-X6g$wtB&}u8F!_a8`kK z|C5$5AM?wI<>EuR8gtE4*&f8p!WntXVf+wE9PUTKoq{8LTN)`@|K)u3j^jCGdIzB- zx%iPUT1EqVwbaL=h@jZlJnRYeWe1>W6`Shzf`B#gcJY|Y=vTsnkh9k}yX9rg%ipBX zeXA0Ap{STIzS|mJVb`vg{B>OW`^ftkb-p6ALA#Am>M59-I&;*n7*YS5Y$}Bv;O=Mh z^TtVG`=MbVx2Y);W$NE@GH4oKJgsT81@WeN?-SL=63KEoH3C7|{_EpZ((jh|qk%#P zF2+Pico`gZ8e^&^F^^8qF=^u=q;)aBS;S%ctc%#@Xq} z*_01U>p(qkE{G3?f|e~l5yXo5SY zUA?1Mr6r^Gp-J{v*&wTgPHlOyZraQ?+l@npT^?5n&Jc>DF|t;-`>vpSID&P?L2KBY z%i8FTywrv$Q}hH+33ifC%@|Qx_M={ZXjl=Tjg0;{3}#dcmRC69z5`&<+g;}k{ts-8 zd)iEm!;Qkmzzrl-^l&Vpu|2--Et@jLfAP8996`jro{y-XtinBWO)ICn+rd-He2IM_ zY5(Vbr2&8$Yw^7y_Kw#;2?EAXpd{2M(^qFGldG!GO^B`C&N=&QoT$^yn*xRc_j1_M z)xVc6DWvkYB2OoK$CLo7F_cOm2Um#8mJmEU+p)^yN*Ewgf^m8;wk;p`s<@aozISPt zh#GZZ0>At~d5X<+*xweUR?KK_qxEa-CCzRbm)JXLtM#Q~9_5lDIlXTzT!O?hSFZ}Y zEuKE}nUB6F;nR9n;`+l{dN^B74EHh9EdW=mzn_to2SaTKrAoPDcLnn=b-#y1>pcb}nP zDM~e{m7s2)r+b}oTqzdJMifJDQ0n(_wG4*j1AuU;=NleH*P`CGW2BTJ#|2vE42gGy z2H0$Ag=lZ7#-^lH8Km~%d^k;yTODv9 zAvO#LwmY`p|R~ym)-xrFar9W#oAjw9$R>k~6GvAWePTSlQ-JmDfy)%DzeV&bdwj z1Y3)rk;wiMJO$X+1*Mp?w!n?CH zP_!E~20)a5SZVc$^cukF8veKPBxdDt`l^_o`%_B->eHDtW>>>05TeoEG2r)j`(&P5 zlqSFr)YdA(B5g~%j88UN(LKJ+qZ1Pv8tNr7(;9ZO!glyclKA0l>*l$@I3t(Jh`sRD zv5K~xIKQV_Dq`6rRSVUwIhPc*Y@Avt?!IS#vYlV~+c+|%_Albxgr#vJ4K9wdD-9;O z$EA@{HuZd~zf9vpS%(=JTtT^3??Q{nru^?8OTzk29j?x=*ANffUG?=pOh@9ZM~x3qDZd?BKYztEJ}dj-8j6qtP>ApT`30EiKyg4_RF1GoH{ow*nu$f-SL0>ncx&zc5&J7B=-CFO$c}??phbi#2rAKJ2_BVI*X6p zs1tWN`h7PnLVSi#<A@e7P+*Wu0>Z-8+I95u9i29p7P8n^%$f)#Z53$IN zSY12eXWg;JBYZbvr2-&^^^S3sYtxxt<;_}|2CtKZ+z~@X#-@>SY0<+EM@N`HGYloj zghWBMVD9Uq^10}50wL5a?g?#qCS$P`R%rh)aes^Ffcyu{Mf`szbtxxNfsY^YT~W)5 ztHc)34c;!@l48Ut*7i5G1r|;9Pacw zI30oIuG2^JeCh7aFV~*k1p^FtEa2h^HCDJ~noe=|iK33q#MHI0lDMfvHW{DVw`}8v z33sqls&^NDCsh(moaixv;NCi%%&z6Hhzu9P+WC|eJNq+rco>kpx2i)*Ra8|Yf`Wrb z!OKl3QQQp%1}8Bum0~sD{R}Q5pi>>;EKGifuDd9)DhK{<;7S`NvHfS=Up8=u+YV+M zh~d*zNxwQTj9|I&b+Ufpf#Ww0hKg_BX5#+pdqv2<6J6KkDl4=1&SLB@%GHkVO$sWA zV#93R@L-qiAsaI4ZoU9&My?!{+m%Ez;lGXI(}dg;DCgouT{&&~s~SHN(Pw5Y%y(*6 z1e~++hQj7MVtSafk;*1TpSmvk{l zTfY8Gu>K16E4@8ez4Y7{myHH`5P|PovY)CjrQ?UpG+6q&)o|l)-(>Q8{>1!Rtc~DO zXNHVIap-h$XWQP;-gKFBIG-UxxhtNZKSzZw4sellZQbNDZ_ZBA%GGf$aPjkoNl?nV zNob^qFX$6x&d9&OJF6rTT;{E_Dbt_&E&7htZv=w$>zIKHpv#wV!gkU^HmmnUooBO! zilN=XWkyY}RWcni;TiaRA-=x75sx7v_U!}b&ZGzR4#z-F>n!aA zavdt%4tb2x@|3Hi$E~fcT_+#A&6i4RW;)!xT~$zww$G4H^S?@XmP@E(^IyI5MVRa( z9V^$JkiuZ!`FwM9LeKk~rsxU_m2upv{}6)oVyLpk{|zxbqE~28MrR|XOy<823SuQq zeQX8`%YT1;3MH&bywV@U6#JuYpSyp3z+|KZQ{pqK7-)Vsn1}9YAXWkK0Ur&spQw7O zPLx^o-L$0Zd`cTC10PBkbPC(6v!2dP`khwKt?mr9nSq3$8N^%7ndZV%rWksr?mM;PP3>1MzB>HEZG z*BqCTiG6H2p~JXJc`-8475~u-Zjnjr3@gl;~4_o)`#RRf2TOAsu-fo9UawDMHmbrv zCBc2>z!XWnqO)WTRch|}kMaGp zPK-9d73$ckyE|*nKqLm*Tl{~lC;E(m5e!9f-$_-b#B1%nvM7@g9iP6~Iiy|NAd(Hy zu^nr8M`@Pr>RDxHmQW%hIJ|}4*_R~ zJGnI;cb|u6{jDn4Z3uy{FQ$RJhTj62^j%*yipD6l?76#3>`8EGq&_&@UI@DxXx>T7 z=3pdT5iJ92(J3<0EbWd{`KA7K9YbRfRvltYlqvISrB5#;%H-Z!=%)j#XA4gLN3DtY6JI0iO$4*?es`;!uTU&?z>mhKx8(ym=l3L`u&MVN6DW5z?9u z>#8B za4%(;V`8|9X;7B|t-O`W_emvK$JFbz2$IlaKhuorg|A?NZU(C~8*vSR{9tzG+)b=wl}T z`SbZe)fOe)^_532al-b9Fr*(WkQ>yXUtsccM4RgahV84HKTW{p=;-J_SFtT1qW(j{ z7cV|=0OI-xK|8mnoNNt5H0Ig&J~U`tw&e;QmC5$06e$Vi3dHPhixBlM*=<(X>ZK0kgmvLK9eE zYacx#mW6v#n`AxK>z+Z$E~YK3H^9IB?U>SM2sA19{+$(&I#>Za&i#klg*8`+Ne!Pv zVN_KPld^OIhBhD94y?asWP~Za45px$3AyS;zg{i9Vfsjat3>-n)gx$=Bjw%4KCzX* zlS>on0C_ef|6odtP071h07=+fU~0WeO3d-BzecJGwZu60Z z6&!Q0RvSLp#R+gcL_}JT|D7{DG?!_pnV5MRi}wEd$&aQBf7o9hvfGNlzy50fz9aX~ zZimZc|M$F;^Up&_vyN5U>9dwl1p=2W{k>@ec(#FiKu7%3q8EV}^-l{F0(h{0Uu28^ z9mFnPv-SW(@b3?7sQ&FC08G1Hz{tOw^f!Rl`1i&C>96>44j5Ng*zFRo0XX5s8#A-i zz5a#9hK>CMDJX=DnmUe>5vlm|^5Oi@%Am`xb++sIa94_G+5 zw=Q6V>RrL{$EkfgfA`y8Niq9t^T+FoStRa20Xg{us8y|ML+GLyhl)6Wyc6^Fs{z^d zE>>Q>(io2JvzWT-BBk1joRoH-wb5GRT-D^c3B9&Ybg@SwL$TF3k*-+|-W<6~5|=-J zUc*49q&aBqM&xPEhGy*>QDC`cR`N-DPWJa4BFBNGs+uaPz;6=jk-)anmB`ESvG@;5NH^19zbw>#PD$Ic^WBw@wP^q)AkCCg!R|)#pHuk& zjr)QDv(x<&y7?$c+#ONL$H!OchMRz#-4oa9O+kt4bjFG00ky~P5t;pR1x3ZOD%*ZV zmxbRmYdb4IrQd4`hV@&T1uqN>Olni^i80uq9?z0X7eb)VyAlOJS-(^h z=Grw3sL4S*=(PHm2uJLSxVp^8=K-H1_E-ILi0wh*=(Nh^3f^tpaLMcQbg_W2$t4)} zfsoLAMRUz{GAcx~PfRoM$#v5t9wQzT$pqDM}q8q@fJ%@;Bh&~dXDER4{X*~f^bl2r52&@C6f?HZjDt>>R^KV+9t zh)7HktyID4sV!{0HnYbT>6fqrFoWwsyJ`hZmP#Jt2~ZVdNf{#K6coCLR$NmtdSjJV zUx0$C6W&DaJk_MUussrIy<77zk@m5?h3?xkf~TlrW~(%H-f462?%TjuqKF&Q9x(l zBPuW{NV$!2&(FNcrP0|pGnZ``=TqTy{=6OvBVG1uk7P;&Xy3NllGpO6aEKwltZB5Iik<=YE!unc11Ol;K9VmY znV)2}tE;<76zLYQx5!7-+eeb)HJxQr87e#`8K5GAoICYparBLD`X-OfTEC_J#(NpR50 zf8`Ij-m~o|5f6Uu@#z+RRU?A$Kw1^JC^7A;?Cay&bA2-pM#M7BLK0}dJ=Q_kkFgme z9FbG(JdF$9JM+pyL|gs=l(xS#`lcQ#ID~RLh)}+*GOfb&oL!-ZEiTtBoA8edzCfzM z;P%svSf3T^WDZ%Z0_<}{`m;&HTsNkwkdXBUsrmkA&ERazC{P0Y<-30gpU)N7vI5o&Ix+4$3{4-5~s%+bf*nwkZV2krn3HUdvvkgpd_ z`V~OdMQ74pmmUI{f(_syAmek9s|i$l*%Ftin8CArD&<7%_kX_#yDPY)Qf!h^^rGb> z$QYrL73>aBQD(vvu>%l#@LC)IJu-eBQ5u_L38pUVC*FCU;av8$d_+m2(>{jF(aPNk z@Pz2TSE4>bTH8x#-ox$17$7_v2?Pa=RH`P?UND)7l#DrU%v26$Oe0DmR|m^pEG_iC zE^rGK0FC0_YBA{i{)Xxcz8~&XOLv_7v|!^F;b{Z6VMFN6K(D4I5{fxa)k*{aGDnIh zxk;%YDJdoxXh{74p+D^|*!&xzxQ|sP`fVUc>{y`feU+xZ_~hO)dc}=iieyo9`mz^OOV1^S9EM84(e8 zMcRBwm)|PljYQ(wRP>FUNTZ6#q^sxyscN(3yg~8DQzP$BGuwFAPOGFL<-Rsa!e(i= z3DsObHe+rAjuWO;#ihQ!H+8*YniaA)c$bg2Q?IlpH)1L*ip+cJKGQw2eh!r(_M7x5 zNmh=$H|F3NWfsGgZMWn>%XkwPL`7DTN03(JChAWk0}sU$ZiR(?j-hfe?g)$Ha%hYJ zR~H%ykb#Em;GbGTqPkYA8D~vPWyDv+Ia(Cd%1(#sEXu+pULMKZ4oAKh=%GWR~iOKd6%u+UzG%3?UlKfX|B2eIa?Y=ag?T^NB#)Ki86o z@Z8G$nCdO319+D0{hsm-o_>{-@xk55!eybncD;t!ngNm<%aCSW|94HpY5@QzMa?i` zR%Mv^viY!b$a|woj}OGxrcACxf72~ldQZ3hg_spaZSY)5A<~|%5U3yY&KSUp6<7vZ zAtxjB3(6b`8S$I1?fM}fu2V__6o){PphZp3Bj7A6J%C2N0RZZs9~&(f zRg;Rjeie(7r-q@b%Sv~YPfoDY9>yV=V4t;`o}>&~BaLaI=46BtE? zf)Un{?aOaX-R+=jds(PQ@=?hyW1ITSX`MZLHHHo5Ih7OG9ww~8W;I~Uw@Pxf+Oz#) zANmO2lZlNJ^Hdjej9<6X5Xhs#e=|OqS&8`@oCL-LK!cTanMM;#A4=sOPrGaDzkwm3 zN_J#YnuaQWB=_plGTn?T#^uCiL2KUrtWCW|R$}#L_Y_dfTgh(6Bi>Po%Q2&*42m4kz7JTIsn6W+ew4= zpH+52;{MbA9|ckWKHmS&Q1GpLp`GK>bgg{4+u2{NE79gTu#qz99AkV%kplpfH5VG> zMSB-abTyC>=;zXZV5ao<3ohW|-3!_AqS07i{D+Ho|0B*_Z2WWlzv0)ES`g7PGxN87 zx*ZpAcG&J6@YfR&L4lfM0zl<&-K#GtDk_Ffz@|@Q`Axy~OpJ`Y0A`3ath7{CRsEf# zU|QwdCKU@Z7WUqa39;B+*6iKp)rCX+4$neZERG2d1BDjkR^F^i1@3DTwc$e6qkS)O zK9bXQz?;ro)Ee&zJB+JJ9-okVa~$9mlB_pO^0QWY~T&D@uaj zbHX`fsL=31C(b0(Tpuszi$YxT}zkdv()fhOg*Z_9R<{fjF39>4PvKS&EN9l<~YcrgpzTq2XBQ-*Z; zivkAhEx}YV`_mgY^NYOXVvkJ{MC|Vdv5L=bq`2bM%o|?4iGXudfu;5_;aIxPy zx%sHTv}iF06o#87)Yj0#o3?UqD=R1RumOkRYk-EU-q@bzf`z|Z zww1&>YHe4h>o~TDOYPPx0s5tXh}=65@m5d%I-?^AKF>69t%W0H53$-t-s~WdF|s>5 z?B>Ed(skDaV%q5qg{`oS$DMwqJCk`+zURL<38UwU(vl>o!%{1kl&n}|JlK6cPDAob zJ4=8n-S6}bJ`JUJqg0Bpe^)P{ghjt=I_118Xc5n&Td2G>+g76Av8V=Y)8EOZ3*|Ol zJlr2vUVqER!M+cka&8ZpFF{VnJpXVOPoEaho8Z3cR=LZvS^hgsqWkbU%Hdf3u82pm z_-@}7k7H$!N!94thSMdocQdx1vL6~=J>Bkx=cr*3`c)8&a!c^%`9x?yoIb?6v)4wE z*-z;j?3ko`0smfh6F?31vmGu40h^?R0~FEB$Z`6NgXWLx5<<(RUS_=a-8!_|f?V>R`z+EKE`Z_#SpUi?IxNyDF@(kErLet$ zlZ1d?3B(Tf#P{IQ$`mT(Dlzd`v<_P8ym)Q2{6Q}mVKcb;Y2+tXWZIVtWLzD~qs!A> zo~4kwKrOYMe?gn&s-^NYoe95mneTWl)d8f?hk#`T!MeJVmtIcjjO8c-d{jD;r@Ll( z`P&+l{Tg}y80g|tW^U$t}NvKR9JL(0R+@S3-xj5gD7#%mJrI% zuBu)&)o>BNbJ#ixUD`0>2Rk`%uFY_CI9$YTaHz-zP59U$y^#2%y!6POTE(!r*2EXPJhO$?G{SKHp)&5DwaB4>tE9^^+f?$@8>#( zw`FfF(=duXBYK8g3rLL%PPXSUTj>9JX``1wR->_cr% zU<#)B62|hjTd1e8W_wP$XTFCyhLxNi$H9!NhFj_w1(@z3vw+`GgMeD{)4w(+4@;eQ zRH7w8^&a?&<6Wl>dZ@3(F%)SxQB$r}?~(fKQYf~z<=87>~%9G*X^b$tTswfCOgYNu`B z<|;=ItcmXMAN$YSxJCsryH+oOp^X{A{*G?>;-`$I_?c6Yk>m2SswBpM-q&P!YSJBXpXCQzc?#X8|ZqIA>;V029@+_LP84+2B=@SUj;o2St7kVfL40_MX=i zbHag{#l2om1)NK)OxA0pcnoJO?80i&MBDI`?Ym03tiij`%)cUUwHBR^wIbJldy6C(fOT17%j&>B1x2%YL~NWOm(=5oYFR4J$0w=Qa_ zGxL2MEC>jIZP!34LXJZ}{QF9$-)@Q4odOJP901X<_^_Lt1~=M0nd0iG8XfCTJ-nAv zrwA=-OEX`E9SU932QVYEaU?H|-j2Ljt>0*P00<^AiBNA{gySTSogO^lh?2qJdC8m_ zlR1zSo_J1OK7O3zP;K7%=I-uNI$^FxAu0`_u}hj1OjVb5CE&cp|A!5CxjUB1I2T^; zx%0Qh&3>mqJ~3 zrzu=^zRx7P~V&AlV z8gnke7D)*!MBbYz{t!|cPU6duk_z@yUd1@QYL7ens^jQTEae0Bnvo+vrV}vYb6*{) zuJxb=uGq5DL%#kMv7*)JOUx_jce#j0U7_KT=wGL99l6jH1R8emtvWtVuvobqoW346Ke zhosD2edB$u;>*LBaR_i6LscJtql0nTtLG_bIpup?jp7>_O9{0*i^}12AbibBL91TC zWAj?8QV*0Q<&<{YZBmlU5w}JVbrCB)A(M7Ht(HdkpMrTIIRBAD#$AIxn(t22{&aL8 zDB^dd5(-Mb!w|uRNUwf%Yr33%+8>qB4si)Ud_OW?+xnb4RA<|hYXw6||tEFrgV^C$vOle1sHVW2sc z7%XHIKTNLgHVw$$Dtio1XV(~!O`?v+Dp<>leduDI%ve285N@kzDIsVvRB5d;8#jA= z+M&%(P+Wej4=deSV6ycZ@2poS+n+YrXs@eIlA7p!9fn70X2~DAQ>=Qc?3?zc)TWSY z?>glNQvg}_i$9C6HT^BXz0u}fN@xJI$(TZ2p87Pg+2b=D(=+y6l#vXzgu;rmWWbp? z`L*u&hrG#EOR!2#eYfAW)mCrXgM$mvlKTxhB}Te*0ucKp4oc*1<=$9cdIu@XZskr_ zl+>v`z3Q?ZkA%Q#oh{M!AiBw*revuZh6&&MhQ1{h5X-M1bKT)!H!N*-$=YxRD*F z`^FnyukL?vCT25P2iS?0M>~&N>VcE#wukknM=P!`bQ^8`5Hsmxabyykk71^fcF7^91 zazz~V%5onb8XH>vQl(HDIbq%?Duu1DukWB5^IUD!q3|Usx88l0fFw_CGePI-sQA?c@zi%tpVoQp3w0>$YoWnG8SF6T9YzeECOD z@a;teRnQY_9)UwQz@GGwp&y{eLL#{*moiVY)vL#gFN-)e?TBD9bQzPjTZJ%(Lli7h zb$z78+t=-(Bg-zwmXme)EhRUmjSRGz#uvI1N%yymc>y09!^T$z{%bi71815Q{0=O< zUhe8BSBHTIQ8gZ1U=7K`12d7>Y0~G_r(EaLVe9+0JMf01ZzX5T5B9%Vbc+zbKCxQ; z%I9sCbnLX3RVeqoT(87vbS+PWgM*`lLeuE7Y-Mqp&#KZsEY+3aVbQ+s6E&skNTzY@ zT$F}K)Bf|e23ppP(`2__cdbT)>Nngs7UOP zqBD%++qM75EQKK+xTOUlMBSJ_j_V4O(Gct2`Z`$s;z0+CpIZfEb?J|d0Sl*b02kdd zRT<)R_ZuKQ?4t+w+BgW{Yt}mu`lCyT%enwSLL@?b*{<_jQh)C3Lv_ExX`Q`6XV%ELX?FWM0HIzSVD%e!uvT z0q*Bri{m$(s3o7B%oiJuARO%WeF8RgzXO?_*0IXNH`z_SC%K6geN}P!o~m*^orUev zx5vp2ms`GMnyt`?*$7e|q^>)K{V}~DTs_p4+mgGJO zF1Lo&G+hh{RfBu@oRr5JUTtnsGHP888>v zfl5)FM}FLwVlk2`oc9NUN?&Kpab^fF!;Q}*+7dquAD(Y_3)Jr@3R(+w%VD@DkC|)E z{Y9?aAFP%M+iXY+h>OLpz%?bwxX_ZwJ|3O?SETxde=L0#@_Ll41A@opjmY>+88O9% z_!09VKGB{a%{Ll2l2U{6=4xt(^u~}_|3>r!@cGlPJ0tS9VaiXeTjMQXE$=Oz5ZL;Pe2QJXQwTw%PF-zl zw%)$_&fAKeG>YBA%3Rvps|MlkNv{9kzE<=qI5Lq|Mw!OD@k1)z50xx*-?HrIH~YSQ za_{sx6rNlJhmok4I;`s21goBunaeJ##VSBd_>l-spJH_4t8^NHd;YX{SHC?PDp0j1 zR_0BN7>+cqvR~-BW8;RDr&(>V9-p@rY2g}_T%Rf_IzFE-Cp>R&Ae1ZL5^Agq(=9gW zB#hf>>?cW*E!|}G4}$0Y=)APhT_0IbP}&ysYd?$b`eMIaHnV=fE+qxJmYM)K=CWO7 zbs813=-ee&d^KNz{7bfuAHc6FTAy>~5Hk&4Uf9}*78gJ$h$$(jRWh8GYHn`53YX8v z-NAiT%H3hF>dDwqd{SLxPs^$dY484;kH?K;E96`;>arM!hDA!es=lvYi|+)Ge{JAn?!0uZ2V4u$XlvaH3n3^7c}r=SmLcWHpAoI%fX#g>RYW zl6=8Hj%lpAAUAAkqPr)p&z_P=fbv>j1kGf-4`HoQ4yGw8j|z$9=OLS0Ij}p=-yO>D zH$xP{;D2z`Qob7qu4Fp}qsy)7gR^lF*RSdo>+~P(v)t+Vv=d)8T+Ivr?v?BM=po)H zz97{u_j9AhYffqQLGM%#iJ{6=`5Z2^u96+h2Cs#N_>c_lk03s-i{@cUQ@6ZqID;X_ zBgRhh!0D&AdFp=N>GYVh04K7Spty4WUY|^ZGDSMh=NqKct!*3SHe}Hagrv(eY)PfB zP3zsLm_;P4K8}BH@@R+mFhpnX6VgjgPv)YeYGH*e*4cytEv=+drla5UC?SDP{4OTn zOUbB5-ez=@79)SM|63!u+cH2I;_v`;DbtEuB8z*g7*}l>v6^H%K2#uV)obtRVBh!W z#j#ASl>Htub3Uh3td2hy&)dWzer`f_i<6d>=!Ie+(Y5h3G8zf%^HTe<{5d9#z~xI# zK%LKjEpz33b?p;a=6W{wpNy-D;i(8}OmmR$W{+@xDBm!Jp4CgHOs`FCrWEtB59Uh}cb9do92S4yUH9@jTJy5% zNxZVNyYG|UaM?@gh@ywc*2R5p+3LEusq?}Yy)1cmTz{6;uZ;w{8r|;)`K!ZOKT5zK zN{o@^g~Nq%Pca%23+5u1p8)I_R^z&t!{}zJ9dau&b1BXnSY}UG4HupdSxOzwYhwe> zrD|GD#V=whL5Y*N;r0RH2}jbB^T!cyfWI}*fs6V*KSYM zU_g1PqkJ^~02?#<+}ZxK@Z#QW&kJ*+!}0yhC2)u=w_$teeT85$1&d^E&s%R%f~A4H`Ub~6H~g+(yQ~svHPdHAn$XG(PqfZT zb8b(mGw!%yhkz}0Fc~Z^;O%kg9kZ&{;@u*+bmk=1-S|_daCBEY)34~~6$a;GhI4;J zKD~y#x$DU+{wHaOyXk<0s&A|o`YMlS!K<0i__H_Kd6F~!0t^nPK+Mh|X_Hxcr8Qp7 zt(~l_5|}?fKakUn6um?Xh7a~8e<_;sR7yIiEp#6mVy+H0b}_Gs^%%uj#90?_A0fvVlKbuI7K3MigUC zB<3HbrV=<`jjm7&oZn}llX9$s1dV@BH%w@7T!9s^Cm@CsjfVwi0F*T`Zt(5nAFHT& zcYL3BjEAX8+(d5`>>CSvj<vS0g!2^|;b0ed;G7CV^;6YLJ3bqTME-+6FtqVJ1{5 zL#FCS+60fqXqwW0sp^kNt@8V#8puv6ap~i`tJeZ)fK~V&p>SFDL4sq`9Dk8^UgWXo z>CS3x%-+`34uDxO133TpC6LN-08P(NSrJma`R{(;W;C*r`6-Rs7_%C7CnJRpycp{2 z?~l)=x^}|F66& z|A(^u{)l=|DO-yyJ&`R`wjvWL!ed`1gvxF#*@lc6qM|4*rb(8`I(A_e+mK3980%QZ zmK0{pc#s*4nfcy5Pklar!}t3=zunjUdfm%8*L9t9-sfEBoV_?mS&xyBM|_N9wfbg@ zD`eqKWDg@^Ei(nAf+*Lw-LD ztLTOPJCMmk>vKfsipuTVyUZ-MV_{?dX!wMGMKCH)>>T`gwW-=#3A~COK?u$EGf}&S z$#My*5CQo|Zm&M$bHxXjQ5eG&VD~D=pZ0v=JbbLGsPF8H%ogdp<3o`oBieYT7t1`p zhxeE8mwRJ+~xv0E*Ev zxY%Q4K#`zL&y%)I3^>Z%#-0_Pl(-P`PT9~Pni}v-9yY|eI&ED~8`fyb2fI6<&5G+ZTV5fkt*h)Wf1h`$?aHtX*Jd|C>A@L)eNW1!Z!JaVo`nu^PuTw%{x|&B8+KoJCH@UE9I^?7VqP)$~ z+@g?}$+usB_2zmI7z{Q!q;a7%W!Wd99ksK6;R15dVCB6;;oU*F!26LCEDGk)GXuN8 zc#da(QX*`r7Q=3(_Ene`?$4n--$_bBf z2r*~*A<+iKUTq+~&DzeTZ(z@8-}<<9YM@N(7(9dYI3ZIQ*X|xNlnPm$B?!n zAq%(y?CqTueC*1f5DL?PKz?Xu{y{>a0N(KT<~)5Ih%aNvTIXtBp@3tB+8EpHpmkE) zo8EJ4e-UyI-+du1DIuTe%ohg41sE^pl==Sz^_M*<3_5T)u#%S4i}KlLkj=@?+-+c~ zVwX29cv+9G80D#W{#YiTaISI}>)D20N^hZEv!$qX$K9l)!*>x=x7H`a^R_p@Px=}=BN9dDG5%z>jpb|1^VBwlZT*a#T0k4UZP3Ee9R0-Z;*qZK~ z2D%JN_c%8@o^%i$rB1MLE1V`BM9*V8nH6-+Tq}t8*mN)8gi{)f3wbi~3P0#(l2ML- zYaqm|@CS%y{87W3K>5Ei4@%2j3LeN~pcI)OZvylXPBoB|?+%pUJ7jBi=aCmeT;Z_n zvj3eRw$p%(up*~Tn$N~6@lJ1h(Hu@CTd!E*b>1l~T5_NBSp}u!Rm((0v{ZaVpJ?t# z;QYgBTesbAq{N_@+)(Ng6V`J$+wyvcYVF$g+XEhnkkP)Qj2BS=Rs{D#^Zm2Ttw@lq z-MHp_)1A$(rbcm09SysxLk%K#I`8%>S%Bmh$8=QbxmU3mYqNu?zKck<&?bls*MDkFUrpj1fWxyK$r4oobllzI-I+QJE~&U||N0 z#rPf=5PPZvL(Szq-nnq;9eBtn0=Tv)7(fQj?S!m+QJ7`*!Z+ka-YF@ClCfey6_BI zv|d0TAL_lspSo3d%m5cxDfv+WWTLwHIn<;F8}dVVUqZTQVeXyYv^oC`!Bk7zQhM5> z$YRS~%>brz&Y~6lp71Y>m650KzV>}2^wf@HHth$I+JW)I$bQnSiHZGFcVWH+QeX6! zr}y?u09ejX*LR^Ibon0~%X4jXP8B*4o}J`qV75#oe99f$-(a3 zJ$iQQR-BxLt0!~)no zblmkdqdYOW`cLDb18@I+sM*|&>(n{ih@j0JWt@`|ij8J0j$#7`KXFbB8YyRgEp8ju zbrC+=zu8{}K`q1`LiIFe#)DRUJ7)(x9s3|24y!M=9L#_c*3pH`udLAxNd1_9KHF~L z@bRoi*??i56FX}G?aYn2)M+D}N3L>f61U0AQ+M{$1nscAF!Bfs^LjZ4Rm*zTg6WV@ zc#76j9$Nx-3A+LMsCPy*T-mE`Kv{LRYcE=|KRs@bop{xuB6u+f)r!G`Yvj*H++oAV zTP-~+bn8PHEt`y~f;;{^{v96Z4rTkq5EB7G<3EJ=@tFu&Cra*&wp8>)k0={Up0n?g zefV->8YC z9H|{S)wK*7Y;}QM7X9v1;4}QjgfRa8zL@zp*_V1De#Fp4x^!@c^3|^*-aP3NJH!5u zeSNoTt1ir20Bhq@iHB6CSrHZSB>4Q;k@?(O`Zv}Dc{d-CTbRLZUI=?yz1We4x=gf{ z-YL|pJA3w4x`-wF0%`Z*na5CT2R>V+l=v*YF!vhStaGOq?cEzAir1SOF>Hbsp>XVh z+Q>6hQeN^HHqrxyn zrb>xa{Slwp0~wf$uA=O(y9N53@mHrtww}s(MhA4vH#@JxbmUR6PjjxtW?x_ScQn8Y-O_Yq@0v$G~VirFt6X>9x zXj>;|hkg(dG2=gkjJ4nAPA~JhFCO{D)=4HRdK{=r;?TVaVp`Sv5_ zUYtc`^p)vWI9K_0N5ShohA*ip>iN#q6Y>+Y56g3x4oEo%qIx}=nj%DRHL~+yA>{6? z&{JEvw@Y}_Lyc*&SIeG?rW>)gBlV!&3%S<^V?-<^OLLMf7fUlcR((H*%)H^cK8(_| zJdJx6+$*{i+c>~PRN*^U1}}8tAiS|pOE?s9jbR97H-y_aT3_@30RO|-{y&TAk}m(h z3E&9gPaYrT7f?tQ{P(znO3?q}k$=-s`S>FC0^<2ak0XH}`bCL3rUL&tFFJPwzyW@d z!aM+y|Gqez@{1S1z{j(IkbjYJFTkkZ7yqALk#obj+-Xy3z7^;&@GosRdjq}de$oFc z9^tJ7=2C-(>1kTz@$(?I;?@}R^=Hivx~+0ToxhKyi($+ zSCk;ej_pb5C;fiWM`uN2aZO@Dmh+~!GmTPj`lDVpaAXo%&rR+eldoL26E5Kg$qa*Rhu%g(<9<31m$org(A+ru$~>ChaaS~$I+voyTThVnSc`>3 z(AUW;TYjN3SPfJ2X>Uh4cpvih1IHV4*z;)LX*era)+zrfhqjh5I@BfR{uPji6Ce+6 zc}z%mD!)rfcUa{};(jvGTZR(CGMd1*Fh7YhG0%d=2(-3ZWsEHz zpqnTdubu?C#GJmgA&%bd@#mra;=hk2{pDx z>aLBMMhsR54)<226_8ZyTkd#3og$!4J?>h(<+8&&(OShLf#oz~?Xvh9L z8Oc~D>~84k8F<0^5hVj+f?#vEg+t+Kh~&}j#H)5Qf~kI|a~vujMbk#rwp`IBg&|!9;NUKr7RA~~583bl#z7vKSQ1rI zu|!P`A2-rzS2EL~nG~1LX4)MBF%j;}4>aiXMt?s^DP(_?(p5&QcaiLs`~erra3RT# zJwrr>-n&>>QH_(ZF&HMciU0Yvb8mf3>(*&+0mVVQ&ojQosal*>T&my8BXOf&+~K{h z>zY_c+nVMM==AApMa0J7`&OgxRrw>f4*8qcUviu78&k@UcPQpP4zFH%?w6$~p&%O; z;CDWrM}$q58p`AMC&MTy%VCxdzxTJ-_3AeT<{Bhy@Skf!uj}Ijk8pxV7hoY@BG-bM zmCC^%OPf8qDiY$E7C&IieeWK<)=OBtvF1;DU6^sUeTzkvww!hcUi``>%6BAE@T>8h06q zc_4k^0J3E&fuDc#V8Tw8eloPEiGlk=a_;tG9c#E_fP&~Nhx^T z1|Y<{JxDth&z1)GI$CRzB;CfXvr1fIvpIkk@Wg|&h?696D;tao_&Y7lYpe(i zb!`6bF0^3^fMx;wYi+H#p&&W7GGwUXE>hED9I>@%p3U62=)SRZRo%5blX6_cOjE5{ zH|{;3zSSjdAPH7(mTM+jmr%>}V(5<9xmHQof_gYSs@OC^1gU1ORGrD^y7Jwj0_wDf z6;>rwpldSVWLRFJOJv3oa>p4d%gvCAj)CHn5(@9ah#jDz-iL+_MFq$1F$2sX-ALw4uy=bu&|68vKT@TU=Eq2FVph|7sfe88!z`f22( oz8B=d?;D9B=KtsH*&N<3{AlU@eNLqGpTB8w$>w79g= literal 0 HcmV?d00001 diff --git a/firmware/controller/components/kiln_web/src/api.cpp b/firmware/controller/components/kiln_web/src/api.cpp index 18ced99..682282e 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", 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/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). -

-