chore: Get build back to work and some CI (#307)
What changed, and why it matters
This commit is a routine build and continuous-integration (CI) maintenance change for the Specter DIY hardware wallet project. It adds Nix package-manager files to pin build dependencies, a GitHub Actions workflow to compile the firmware, and a large amount of documentation, hardware files, and project scaffolding. There is no indication in the diff that any cryptographic, wallet, or firmware runtime code was changed in a way that introduces a security vulnerability.
No security action required. Treat as normal build/CI hygiene. Reviewers may optionally verify the Nix flake inputs and GitHub Action versions are trustworthy, but this is standard supply-chain due diligence rather than a response to a vulnerability.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff is dominated by additions: Nix flake/shell configuration (flake.nix, flake.lock, shell.nix, .envrc), a GitHub Actions build workflow (.github/workflows/build.yml), build scripts (Makefile, build_firmware.sh, Dockerfile), manifests, and extensive docs, images, and PCB/shield assets. The only source-code files added are boot scripts, a debug hardware test, a demo app, and the existing src/ tree being introduced. No runtime security logic (key derivation, signing, PSBT parsing, storage encryption, bootloader verification) is modified. The CI workflow uses pinned, public actions and builds inside Nix; it does not expose secrets or alter release signing.
Changed components
Build system (Makefile, Nix flake, shell.nix, Dockerfile)CI pipeline (.github/workflows/build.yml)Documentation and hardware design assetsBoot/debug helpers (boot/debug/boot.py, boot/main/boot.py, boot/debug/hardwaretest.py)Inspect captured patch +45671 / −0
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..f003c6c
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,43 @@
+name: Build
+
+on:
+ pull_request:
+ branches: [main, master]
+ push:
+ branches: [main, master]
+
+jobs:
+ build:
+ name: Build Firmware
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install Nix
+ uses: DeterminateSystems/nix-installer-action@v14
+
+ - name: Cache Nix store
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cache/nix
+ /nix/store
+ key: nix-${{ runner.os }}-${{ hashFiles('flake.lock') }}
+ restore-keys: |
+ nix-${{ runner.os }}-
+
+ - name: Build Unix simulator
+ run: nix develop -c make unix
+
+ - name: Build STM32F469 Discovery firmware
+ run: nix develop -c make disco
+
+ - name: Upload firmware artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: firmware-binaries
+ path: |
+ bin/specter-diy.bin
+ bin/specter-diy.hex
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0562adc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+debug.h
+bin
+.venv
+fs
+testdir
+__pycache__
+release
+.idea
+.vscode
+.DS_Store
+.direnv
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..1066f1d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "f469-disco"]
+ path = f469-disco
+ url = https://github.com/diybitcoinhardware/f469-disco
+[submodule "bootloader"]
+ path = bootloader
+ url = https://github.com/cryptoadvance/specter-bootloader
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..5e0059c
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,23 @@
+FROM python:3.9.15@sha256:b5f024fa682187ef9305a2b5d2c4bb583bef83356259669fc80273bb2222f5ed
+ENV LANG C.UTF-8
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+# ARM Embedded Toolchain
+# Integrity is checked using the MD5 checksum provided by ARM at https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
+RUN curl -sSfL -o arm-toolchain.tar.bz2 "https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2?revision=05382cca-1721-44e1-ae19-1e7c3dc96118&rev=05382cca172144e1ae191e7c3dc96118&hash=3ACFE672E449EBA7A21773EE284A88BC7DFA5044" && \
+ echo 2b9eeccc33470f9d3cda26983b9d2dc6 arm-toolchain.tar.bz2 > /tmp/arm-toolchain.md5 && \
+ md5sum --check /tmp/arm-toolchain.md5 && rm /tmp/arm-toolchain.md5 && \
+ tar xf arm-toolchain.tar.bz2 -C /opt && \
+ rm arm-toolchain.tar.bz2
+
+# Adding GCC to PATH and defining rustup/cargo home directories
+ENV PATH=/opt/gcc-arm-none-eabi-9-2020-q2-update/bin:$PATH
+
+# Installing python requirements
+COPY bootloader/tools/requirements.txt .
+RUN pip3 install -r requirements.txt
+
+WORKDIR /app
+
+CMD ["/usr/bin/env", "bash", "./build_firmware.sh"]
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..ab3e029
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 cryptoadvance
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f9b123b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,86 @@
+TARGET_DIR = bin
+BOARD ?= STM32F469DISC
+FLAVOR ?= SPECTER
+USER_C_MODULES ?= ../../../usermods
+MPY_DIR ?= f469-disco/micropython
+FROZEN_MANIFEST_DISCO ?= ../../../../manifests/disco.py
+FROZEN_MANIFEST_DEBUG ?= ../../../../manifests/debug.py
+FROZEN_MANIFEST_UNIX ?= ../../../../manifests/unix.py
+DEBUG ?= 0
+USE_DBOOT ?= 0
+
+$(TARGET_DIR):
+ mkdir -p $(TARGET_DIR)
+
+# check submodules
+$(MPY_DIR)/mpy-cross/Makefile:
+ git submodule update --init --recursive
+
+# cross-compiler
+mpy-cross: $(TARGET_DIR) $(MPY_DIR)/mpy-cross/Makefile
+ @echo Building cross-compiler
+ make -C $(MPY_DIR)/mpy-cross \
+ DEBUG=$(DEBUG) && \
+ cp $(MPY_DIR)/mpy-cross/mpy-cross $(TARGET_DIR)
+
+# disco board with bitcoin library
+disco: $(TARGET_DIR) mpy-cross $(MPY_DIR)/ports/stm32
+ @echo Building firmware
+ make -C $(MPY_DIR)/ports/stm32 \
+ BOARD=$(BOARD) \
+ FLAVOR=$(FLAVOR) \
+ USE_DBOOT=$(USE_DBOOT) \
+ USER_C_MODULES=$(USER_C_MODULES) \
+ FROZEN_MANIFEST=$(FROZEN_MANIFEST_DISCO) \
+ DEBUG=$(DEBUG) && \
+ arm-none-eabi-objcopy -O binary \
+ $(MPY_DIR)/ports/stm32/build-STM32F469DISC/firmware.elf \
+ $(TARGET_DIR)/specter-diy.bin && \
+ cp $(MPY_DIR)/ports/stm32/build-STM32F469DISC/firmware.hex \
+ $(TARGET_DIR)/specter-diy.hex
+
+# disco board with bitcoin library
+debug: $(TARGET_DIR) mpy-cross $(MPY_DIR)/ports/stm32
+ @echo Building firmware
+ make -C $(MPY_DIR)/ports/stm32 \
+ BOARD=$(BOARD) \
+ FLAVOR=$(FLAVOR) \
+ USE_DBOOT=$(USE_DBOOT) \
+ USER_C_MODULES=$(USER_C_MODULES) \
+ FROZEN_MANIFEST=$(FROZEN_MANIFEST_DEBUG) \
+ DEBUG=$(DEBUG) && \
+ arm-none-eabi-objcopy -O binary \
+ $(MPY_DIR)/ports/stm32/build-STM32F469DISC/firmware.elf \
+ $(TARGET_DIR)/debug.bin && \
+ cp $(MPY_DIR)/ports/stm32/build-STM32F469DISC/firmware.hex \
+ $(TARGET_DIR)/debug.hex
+
+
+# unixport (simulator)
+unix: $(TARGET_DIR) mpy-cross $(MPY_DIR)/ports/unix
+ @echo Building binary with frozen files
+ make -C $(MPY_DIR)/ports/unix \
+ USER_C_MODULES=$(USER_C_MODULES) \
+ FROZEN_MANIFEST=$(FROZEN_MANIFEST_UNIX) && \
+ cp $(MPY_DIR)/ports/unix/micropython $(TARGET_DIR)/micropython_unix
+
+simulate: unix
+ $(TARGET_DIR)/micropython_unix simulate.py
+
+test: unix
+ $(TARGET_DIR)/micropython_unix tests/run_tests.py
+
+all: mpy-cross disco unix
+
+clean:
+ rm -rf $(TARGET_DIR)
+ make -C $(MPY_DIR)/mpy-cross clean
+ make -C $(MPY_DIR)/ports/unix \
+ USER_C_MODULES=$(USER_C_MODULES) \
+ FROZEN_MANIFEST=$(FROZEN_MANIFEST_UNIX) clean
+ make -C $(MPY_DIR)/ports/stm32 \
+ BOARD=$(BOARD) \
+ USER_C_MODULES=$(USER_C_MODULES) \
+ FROZEN_MANIFEST=$(FROZEN_MANIFEST_DISCO) clean
+
+.PHONY: all clean
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..49cf550
--- /dev/null
+++ b/README.md
@@ -0,0 +1,70 @@
+# Specter-DIY
+
+ "Cypherpunks write code. We know that someone has to write software to defend privacy,
+ and since we can't get privacy unless we all do, we're going to write it."
+ A Cypherpunk's Manifesto - Eric Hughes - 9 March 1993
+
+ ...and Cypherpunks do build their own Bitcoin Hardware Wallets.
+
+
+
+The idea of the project is to build a hardware wallet from off-the-shelf components.
+Even though we have [an extension board](./shield) that puts everything in a nice form-factor and helps you to avoid any soldering, we will continue supporting and maintaining compatibility with standard components.
+
+We also want to keep the project flexible such that it can work on any other set of components with minimal changes. Maybe you want to make a hardware wallet on a different architecture (RISC-V?), with an audio modem as a communication channel - you should be able to do it. It should be easy to add or change functionality of Specter and we try to abstract logical modules as much as we can.
+
+QR codes are a default way for Specter to communicate with the host. QR codes are pretty convenient and allow the user to be in control of the data transmission - every QR code has a very limited capacity and communication happens unidirectionally. And it's airgapped - you don't need to connect the wallet to the computer at any time.
+
+For secret storage we support agnostic mode (wallet forgets all secrets when turned off), reckless mode (stores secrets in flash of the application microcontroller) and secure element integration is coming soon.
+
+Our main focus is multisignature setup with other hardware wallets, but wallet can also work as a single signer. We try to make it compatible with Bitcoin Core where we can - PSBT for unsigned transactions, wallet descriptors for importing/exporting multisig wallets. To communicate with Bitcoin Core easier we are also working on [Specter Desktop app](https://github.com/cryptoadvance/specter-desktop) - a small python flask server talking to your Bitcoin Core node.
+
+Most of the firmware is written in MicroPython which makes the code easy to audit and change. We use [secp256k1](https://github.com/bitcoin-core/secp256k1) library from Bitcoin Core for elliptic curve calculations and [LittlevGL](https://lvgl.io/) library for GUI.
+
+## DISCLAIMER
+
+The project has significantly matured, to the extent that the security level of Specter-DIY is now comparable to commercial hardware wallets on the market. We implemented a secure bootloader that verifies firmware upgrades, so you can be sure that only signed firmware can be uploaded to the device after initial setup. However, unlike with commercial signing devices the bootloader has to be installed manually by the user and is not set in the factory of the device vendor. Thus, pay extra attention during the initial firmware installation and make sure you verified PGP signatures and flash the firmware from a secure computer.
+
+If something doesn't work open an issue here or ask a question in our [Telegram group](https://t.me/+VEinVSYkW5TUl5Ai).
+
+## Documentation
+
+All the docs are stored in the [`docs/`](./docs) folder:
+
+- [`shopping.md`](./docs/shopping.md) explains what to buy
+- [`assembly.md`](./docs/assembly.md) shows how to put everything together.
+- [`quickstart.md`](./docs/quickstart.md) guides you through the initial steps how to get firmware on the board
+- [`reproducible-build.md`](./docs/reproducible-build.md) describes how to build the initial firmware and upgrade files with the same hash as in the release using Docker
+- [`build.md`](./docs/build.md) describes how to build the firmware and the simulator yourself
+- [`security.md`](./docs/security.md) explains possible attack vectors and security model of the project
+- [`development.md`](./docs/development.md) explains how to start developing on Specter
+- [`simulator.md`](./docs/simulator.md) shows how to run a simulator on unix/macOS
+- [`communication.md`](./docs/communication.md) defines communication protocol with the host over QR codes and USB
+- [`roadmap.md`](./docs/roadmap.md) explains what we need to implement before we can consider the wallet be ready to use with real funds.
+
+Specter-Shield documentation and all the files are available in the [`shield/`](./shield) folder:
+
+- [What it looks like](./shield/README.md)
+- [How to print a 3d case](./shield/3dprinting.md)
+
+Supported networks: Mainnet, Testnet, Regtest, Signet.
+
+## USB communication on Linux
+
+You may need to set up udev rules and add yourself to `dialout` group. Read more in [`udev`](./udev/README.md) folder.
+
+## Video and screenshots
+
+Check out [this video](https://www.youtube.com/watch?v=1H7FqG_FmCw) to get an idea how to assemble it and how it works.
+
+Here is a [Gallery](./docs/pictures/gallery/README.md) with devices assembled by the community.
+
+A few pictures of the UI:
+
+### Wallet screens
+
+
+
+### Key generation and recovery
+
+
diff --git a/boot/debug/boot.py b/boot/debug/boot.py
new file mode 100755
index 0000000..fdba03e
--- /dev/null
+++ b/boot/debug/boot.py
@@ -0,0 +1,44 @@
+# boot.py -- run on boot-up
+# can run arbitrary Python, but best to keep it minimal
+import pyb, os, micropython, time
+
+# power hold
+pwr = pyb.Pin("B15", pyb.Pin.OUT)
+pwr.on()
+
+version = "<version:tag10>0100900001</version:tag10>"
+
+leds = [pyb.LED(i) for i in range(1,5)]
+# poweroff on button press
+def pwrcb(e):
+ micropython.schedule(poweroff, 0)
+
+# callback scheduled from the interrupt
+def poweroff(_):
+ for led in leds:
+ led.toggle()
+ os.sync()
+ time.sleep_ms(300)
+ pwr.off()
+ time.sleep_ms(300)
+ # will never reach here
+ for led in leds:
+ led.toggle()
+
+pyb.ExtInt(pyb.Pin('B1'), pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_NONE, pwrcb)
+
+# configure usb from start if you want,
+# otherwise will be configured after PIN
+# pyb.usb_mode("VCP+MSC") # debug mode with USB and mounted storages from start
+# pyb.usb_mode("VCP") # debug mode with USB from start
+# disable at start
+# pyb.usb_mode(None)
+# os.dupterm(None,0)
+# os.dupterm(None,1)
+
+# inject version to platform module
+import platform
+platform.version = version
+
+# uncomment to run some custom main:
+pyb.main("hardwaretest.py")
diff --git a/boot/debug/debug.py b/boot/debug/debug.py
new file mode 100644
index 0000000..8df9bbd
--- /dev/null
+++ b/boot/debug/debug.py
@@ -0,0 +1,7 @@
+# write here some bootstrap code for your debugging
+
+from keystore.javacard.util import get_connection
+from keystore.javacard.applets.memorycard import MemoryCardApplet
+
+conn = get_connection()
+app = MemoryCardApplet(conn)
\ No newline at end of file
diff --git a/boot/debug/hardwaretest.py b/boot/debug/hardwaretest.py
new file mode 100644
index 0000000..6a80af2
--- /dev/null
+++ b/boot/debug/hardwaretest.py
@@ -0,0 +1,93 @@
+from gui.specter import SpecterGUI
+from gui.screens.screen import Screen
+import lvgl as lv
+import asyncio
+from platform import delete_recursively, fpath, mount_sdram, get_version
+from hosts import QRHost
+from keystore.javacard.applets.memorycard import MemoryCardApplet
+from keystore.javacard.util import get_connection
+
+class HardwareTest:
+ def __init__(self):
+ self.rampath = mount_sdram()
+ self.gui = SpecterGUI()
+ Screen.COLORS["none"] = lv.color_hex(0xeeeeee)
+ Screen.network = "none"
+ self.qr = None
+
+ def start(self):
+ self.gui.start(dark=False)
+ asyncio.run(self.main())
+
+ async def main(self):
+ buttons = [
+ (1, "Wipe the device storage"),
+ (2, "Configure QR code scanner"),
+ (3, "Scan something"),
+ (4, "Test smartcard"),
+ ]
+ while True:
+ res = await self.gui.menu(buttons,
+ title="Factory test, version %s" % get_version(),
+ note="This firmware is used to test electrical connections between the discovery board and other components.\nIt can also erase the content of the internal storage\n(factory reset).")
+ if res == 1:
+ conf = await self.gui.prompt("Wipe the device?",
+ "This will delete everything from internal storage.")
+ if conf:
+ await self.wipe()
+ elif res == 2:
+ if self.qr is None:
+ self.qr = QRHost(self.rampath+"/qr")
+ self.qr.init()
+ self.qr.start(self)
+ if self.qr.is_configured:
+ await self.gui.alert("Success!", "QR code scanner is configured")
+ else:
+ await self.gui.alert("Fail...", "Something went wrong. Maybe reboot and try again...")
+ elif res == 3:
+ if self.qr is None:
+ self.qr = QRHost(self.rampath+"/qr")
+ self.qr.init()
+ self.qr.start(self)
+ await self.qr.enable()
+ s = await self.qr.get_data()
+ if s:
+ data = s.read().decode()
+ await self.gui.alert("Here's what we scanned:", data)
+ else:
+ conn = get_connection()
+ if not conn.isCardInserted():
+ await self.gui.alert("Card is not present!",
+ "Smartcard is not inserted")
+ else:
+ try:
+ conn.connect(conn.T1_protocol)
+ except:
+ pass
+ try:
+ app = MemoryCardApplet(conn)
+ app.open_secure_channel()
+ print(app.get_pin_status())
+ if app.is_pin_set:
+ await self.gui.alert("Smartcard works!", "Pin is set")
+ else:
+ await self.gui.alert("Smartcard works!", "Pin is not set")
+ except Exception as e:
+ await self.gui.alert("Something went wrong...",
+ "We got an exception: %r" % e)
+ await asyncio.sleep_ms(30)
+
+ async def host_exception_handler(self, e):
+ pass
+
+ async def wipe(self):
+ try:
+ delete_recursively(fpath("/flash"))
+ delete_recursively(fpath("/qspi"))
+ await self.gui.alert("Success!", "All the content is deleted.")
+ except Exception as e:
+ await self.gui.alert("Fail!", "Something bad happened:\n"+str(e))
+
+
+if __name__ == '__main__':
+ HardwareTest().start()
\ No newline at end of file
diff --git a/boot/main/boot.py b/boot/main/boot.py
new file mode 100755
index 0000000..727d90d
--- /dev/null
+++ b/boot/main/boot.py
@@ -0,0 +1,64 @@
+# boot.py -- run on boot-up
+# can run arbitrary Python, but best to keep it minimal
+import pyb, os, micropython, time
+import sys
+
+# Clean sys.path from qspi
+# Shouldn't happen in production, but just in case.
+for p in sys.path:
+ if "qspi" in sys.path:
+ sys.path.remove(p)
+
+# power hold
+pwr = pyb.Pin("B15", pyb.Pin.OUT)
+pwr.on()
+
+version = "<version:tag10>0100900099</version:tag10>"
+
+# get i2c
+i2c = pyb.I2C(1)
+i2c.init()
+# start measurements
+if 112 in i2c.scan():
+ i2c.mem_write(0b00010000, 112, 0)
+
+leds = [pyb.LED(i) for i in range(1,5)]
+# poweroff on button press
+def pwrcb(e):
+ micropython.schedule(poweroff, 0)
+
+# callback scheduled from the interrupt
+def poweroff(_):
+ # make sure it disables power no matter what
+ try:
+ for led in leds:
+ led.toggle()
+ # stop battery manangement
+ if 112 in i2c.scan():
+ i2c.mem_write(0, 112, 0)
+ # sync filesystem
+ os.sync()
+ time.sleep_ms(300)
+ finally:
+ # disable power
+ pwr.off()
+ time.sleep_ms(300)
+ # will never reach here
+ for led in leds:
+ led.toggle()
+
+pyb.ExtInt(pyb.Pin('B1'), pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_NONE, pwrcb)
+
+# configure usb from start if you want,
+# otherwise will be configured after PIN
+# pyb.usb_mode("VCP+MSC") # debug mode with USB and mounted storages from start
+# pyb.usb_mode("VCP") # debug mode with USB from start
+# disable at start
+pyb.usb_mode(None)
+os.dupterm(None,0)
+os.dupterm(None,1)
+
+# inject version and i2c to platform module
+import platform
+platform.version = version
+platform.i2c = i2c
diff --git a/build_firmware.sh b/build_firmware.sh
new file mode 100755
index 0000000..95cecce
--- /dev/null
+++ b/build_firmware.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+INFO="\e[1;36m"
+ENDCOLOR="\e[0m"
+
+echo -e "${INFO}
+══════════════════════ Building main firmware ═════════════════════════════
+${ENDCOLOR}"
+make clean
+make disco USE_DBOOT=1
+
+echo -e "${INFO}
+═════════════════════ Building secure bootloader ══════════════════════════
+${ENDCOLOR}"
+cd bootloader
+make clean
+make stm32f469disco READ_PROTECTION=1 WRITE_PROTECTION=1
+cd -
+
+echo -e "${INFO}
+══════════════════════ Assembling final binaries ══════════════════════════
+${ENDCOLOR}"
+mkdir -p release
+
+python3 ./bootloader/tools/make-initial-firmware.py -s ./bootloader/build/stm32f469disco/startup/release/startup.hex -b ./bootloader/build/stm32f469disco/bootloader/release/bootloader.hex -f ./bin/specter-diy.hex -bin ./release/initial_firmware.bin
+echo -e "Initial firmware saved to release/initial_firmware.bin"
+
+python3 ./bootloader/tools/upgrade-generator.py gen -f ./bin/specter-diy.hex -p stm32f469disco ./release/specter_upgrade.bin
+cp ./release/specter_upgrade.bin ./release/specter_upgrade_unsigned.bin
+echo "Unsigned upgrate file saved to release/specter_upgrade_unsigned.bin"
+
+HASH=$(python3 ./bootloader/tools/upgrade-generator.py message ./release/specter_upgrade.bin)
+
+echo "
+╔═════════════════════════════════════════════════════════════════════════╗
+║ Message to sign with vendor keys: ║
+║ ║
+║ ${HASH} ║
+║ ║
+╚═════════════════════════════════════════════════════════════════════════╝
+"
+
+
+echo -e "${INFO}
+═════════════════════ Adding signature to the binary ══════════════════════
+${ENDCOLOR}"
+
+while true; do
+ echo "Provide a signature to add to the upgrade file, or just hit enter to stop."
+ read SIGNATURE
+ if [ -z $SIGNATURE ]; then
+ break
+ fi
+ python3 ./bootloader/tools/upgrade-generator.py import-sig -s $SIGNATURE ./release/specter_upgrade.bin
+ echo "Signature is added: ${SIGNATURE}"
+done
+
+echo -e "${INFO}
+═════════════════════════ Hashes of the binaries: ═════════════════════════
+${ENDCOLOR}"
+
+cd release
+sha256sum *.bin > sha256.txt
+cat sha256.txt
+
+echo "
+Hashes saved to release/sha256.txt file.
+"
\ No newline at end of file
diff --git a/demo_apps/.gitignore b/demo_apps/.gitignore
new file mode 100644
index 0000000..2f7b51b
--- /dev/null
+++ b/demo_apps/.gitignore
@@ -0,0 +1 @@
+*.mpy
\ No newline at end of file
diff --git a/demo_apps/__init__.py b/demo_apps/__init__.py
new file mode 100644
index 0000000..16a6920
--- /dev/null
+++ b/demo_apps/__init__.py
@@ -0,0 +1,3 @@
+__all__ = [
+ 'helloworld',
+]
diff --git a/demo_apps/helloworld.py b/demo_apps/helloworld.py
new file mode 100644
index 0000000..5913eba
--- /dev/null
+++ b/demo_apps/helloworld.py
@@ -0,0 +1,45 @@
+"""
+Demo of a single-file app extending Specter functionality.
+This app returns hello to the host
+"""
+from app import BaseApp, AppError
+from io import BytesIO
+from binascii import hexlify
+from gui.screens import Prompt
+# Should be called App if you use a single file
+
+
+class App(BaseApp):
+ """Allows to query random bytes from on-board TRNG."""
+ prefixes = [b"hello"]
+
+ async def process_host_command(self, stream, show_screen):
+ """
+ If command with one of the prefixes is received
+ it will be passed to this method.
+ Should return a tuple:
+ - stream (file, BytesIO etc)
+ - meta object with title and note
+ """
+ # reads prefix from the stream (until first space)
+ prefix = self.get_prefix(stream)
+ if prefix != b"hello":
+ # WTF? It's not our data...
+ raise AppError("Prefix is not valid: %s" % prefix.decode())
+ name = stream.read().decode()
+ # ask the user if he really wants it
+ # build a screen
+ scr = Prompt("Say hello?",
+ "Are you sure you want to say hello to\n\n%s?\n\n"
+ "Saying hello can compromise your security!"
+ % name)
+ # show screen and wait for result
+ res = await show_screen(scr)
+ # check if he confirmed
+ if not res:
+ return
+ obj = {
+ "title": "Hello!",
+ }
+ d = b"Hello " + name.encode()
+ return BytesIO(d), obj
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..3a8b6b5
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,12 @@
+# Documentation
+
+## Table of contents
+
+- [`shopping.md`](./shopping.md) explains what to buy
+- [`assembly.md`](./assembly.md) shows how to put everything together.
+- [`quickstart.md`](./quickstart.md) guides you through the initial steps how to get firmware on the board
+- [`security.md`](./security.md) explains possible attack vectors and security model of the project
+- [`development.md`](./development.md) explains how to start developing on Specter
+- [`simulator.md`](./simulator.md) shows how to run a simulator on unix/macOS
+- [`communication.md`](./communication.md) defines communication protocol with the host over QR codes and USB
+- [`roadmap.md`](./roadmap.md) explains what we need to implement before we can consider the wallet be ready to use with real funds.
\ No newline at end of file
diff --git a/docs/assembly.md b/docs/assembly.md
new file mode 100644
index 0000000..9dd0f4f
--- /dev/null
+++ b/docs/assembly.md
@@ -0,0 +1,25 @@
+# Assembly of Specter-DIY
+
+## Connecting Waveshare Barcode scanner
+
+The wallet firmware will configure the scanner for you on the first run, so no manual preconfiguration is required.
+
+Here is how you connect the scanner to the board:
+
+
+
+For convenience you can buy an Arduino Protype shield and solder & mount everything on it (i.e. [this one](https://www.digikey.com/catalog/en/partgroup/proto-shield-rev3-uno-size/79347))
+
+## Power management
+
+On the top side of the board there is a jumper that defines where it will take power. You can change position of the jumper and select power source to be one of the USB ports or VIN pin and connect external battery there (should be 5V).
+
+## Enclosure for DIY
+
+Check out the [`enclosures`](./enclosures) folder.
+
+## [Be creative!](./pictures/gallery/README.md)
+
+Assemble your own Specter-DIY and send us the pictures (make a pull request or reach out to us).
+
+Check out the [Gallery](./pictures/gallery/README.md) with Specters assembled by the community!
\ No newline at end of file
diff --git a/docs/build.md b/docs/build.md
new file mode 100644
index 0000000..af123e5
--- /dev/null
+++ b/docs/build.md
@@ -0,0 +1,100 @@
+# Build
+
+Clone the repository recursively `git clone https://github.com/cryptoadvance/specter-diy.git --recursive`
+
+`bootloader` folder contains a [secure bootloader](https://github.com/cryptoadvance/specter-bootloader) that you can customize with your own firmware signing keys.
+
+## Prerequisities
+
+There are multiple ways to get all necessary tools. The recommended way is to use the Nix flake with direnv.
+If that's too complicated for you, you can use the traditional `nix-shell` or install the tools manually (which mighty be tricky to get the dependencies right).
+
+### Nix flake (Recommended)
+
+The easiest way to get all necessary tools is to use the Nix flake from the root of the repository. You need to have [Nix](https://nixos.org/) (on Mac use [determinate](https://github.com/DeterminateSystems/nix-installer)) with flakes enabled. This only works with Nix >2.7 (check with `nix --version`).
+Install direnv with `brew install direnv` (on Mac) or `sudo apt install direnv` (on Linux).
+
+Make sure that [flakes are enabled](https://nixos.wiki/wiki/Flakes) in your Nix config. On Linux systems, your user might need to be added to the nix-users group.
+
+```sh
+# Enter development shell
+nix develop
+
+# Or use with direnv for automatic activation
+direnv allow
+```
+
+
+### Nix shell
+
+Alternatively, you can use the traditional `shell.nix`:
+
+```sh
+nix-shell
+```
+You'll need to have [Nix](https://nixos.org/) installed as well.
+
+### Prerequisities (Manually): Board
+
+To compile the firmware for the board you will need `arm-none-eabi-gcc` compiler.
+
+**Debian/Ubuntu**:
+```sh
+sudo apt-get install build-essential gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch openocd
+```
+
+**Archlinux**:
+```sh
+sudo pacman -S arm-none-eabi-gcc arm-none-eabi-binutils openocd base-devel python-case
+```
+You might need change default gcc flag settings with `CFLAGS_EXTRA="-w"`. Export it or set the variable before of `make`
+to avoid warnings being raised as errors.
+
+**MacOS**:
+```sh
+brew tap ArmMbed/homebrew-formulae
+brew install arm-none-eabi-gcc
+```
+
+On **Windows**: Install linux subsystem and follow Linux instructions.
+
+### Prerequisities (Manually): Simulator
+
+You may need to install SDL2 library to simulate the screen of the device.
+
+**Linux**:
+```sh
+sudo apt install libsdl2-dev
+```
+
+**MacOS**:
+```sh
+brew install sdl2
+```
+
+**Windows**:
+- `sudo apt install libsdl2-dev` on Linux side.
+- install and launch [Xming](https://sourceforge.net/projects/xming/) on Windows side
+- set `export DISPLAY=:0` on linux part
+
+## Build
+
+All build commands might need a prefix like `nix develop -c` or need to be run from `nix develop` shell. If you use direnv, you don't need to do anything, apart from an initial `direnv allow`.
+
+To build custom bootloader and firmware that you will be able to sign check out the bootloader doc on [self-signed firmware](https://github.com/cryptoadvance/specter-bootloader/blob/master/doc/selfsigned.md). To wipe flash and remove protections on the device with the secure bootloader check out [this doc](https://github.com/cryptoadvance/specter-bootloader/blob/master/doc/remove_protection.md).
+
+To build an open firmware (no bootloader and signature verifications) run `make disco`. The result is the `bin/specter-diy.bin` file that you can copy-paste to the board over miniUSB.
+
+To build a simulator run `make unix` - it will compile a micropython simulator for mac/unix and store it under `bin/micropython_unix`.
+
+To launch a simulator either run `bin/micropython_unix simulate.py` or simly run `make simulate`.
+
+If something is not working you can clean up with `make clean`
+
+## Run Unittests
+
+Currently unittests work only on linuxport, and there are... not many... Contributions are very welcome!
+
+```
+make test
+```
diff --git a/docs/communication.md b/docs/communication.md
new file mode 100644
index 0000000..99d4f73
--- /dev/null
+++ b/docs/communication.md
@@ -0,0 +1,72 @@
+# Communcation with the host
+
+## QR codes
+
+### Address verification
+
+To verify receiving address hardware wallet expects the following string:
+
+```
+bitcoin:<address>?index=<index>
+```
+
+Prefix `bitcoin:` is optional. Index should be the last index of the derivation path for one of existing wallet descriptors.
+
+Specter tries to derive an address for descriptors of all existing wallets and displays the address on the screen if one of derived addresses matches.
+
+For example, if Specter has two wallets:
+
+- Simple with descriptor `wpkh([b317ec86/84h/1h/0h]vpub5YHLPnkkpPW1ecL7Di7Gv2wDHDtBNqRdt17gMULpxJ27ZA1MmW7xbZjdg1S7d5JKaJ8CiZEmRUHrEB6CGuLomA6ioVa1Pcke6fEb5CzDBU1)`
+- Multisig with descriptor `wsh(sortedmulti(2,[b317ec86/48h/1h/0h/2h]tpubDEToKMGFhyuP6kfwvjtYaf56khzS1cUcwc47C6aMH6bQ8sNVLMcCK6jr21YDCkU2QhTK5CAnddhfgZ8dD4EL1wGCaAKZaGFeVVdXHaJMTMn,[f04828fe/48h/1h/0h/2h]tpubDFekS5zvPSdW6WWjH2p7vPRkxmeeNGnirmj36AUyoAYbJvfKBj6UARWR5gQ6FRrr98dzT1XFTi6rfGo9AAAeutY1S6SoWijQ8BKxDhYQzDR,[d3c05b2e/48h/1h/0h/2h]tpubDFnAczXQTHxuBh7FxrpLDHBidkC1Di54pTPSPMu4AQjKziFQQTTEFXEVugqm8ucKQhJfLGesBjRZWtLpqAkAmecoXtvaPwCzf4teqrY7Uu5))`
+
+and it scanned QR code with data `bitcoin:bcrt1qd3mtrhysk3k4w6fmu7ayjvwk6q98c2dpf0p4x87zauu8rcgq5dzq73tyrx?index=2`
+
+it will try to derive receiving addresses for both wallets appending `/0/2` to every descriptor key. In this case for Multisig wallet the address will match, therefore it will display to the user this address with a title `Address #2 from wallet "Multisig"`.
+
+*Note that wallets are defined for particular network, so if you have a multisig wallet on regtest doesn't mean that it exists on testnet as well, and Specter only checks wallets in currently selected network.*
+
+### Adding wallet to Specter
+
+In order to sign transaction or verify an address Specter needs to know about corresponding wallet. By default only `wpkh` wallet is created for each network, so all multisig wallets need to be imported.
+
+To import the wallet using QR codes user needs to get to the **Wallets** menu and click on **Add wallet**. Scanned QR code should be of the following form:
+
+```
+addwallet <wallet_name>&<wallet_descriptor>
+```
+
+Descriptors used in Specter are almost the same as in [Bitcoin Core](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md) with a few differences - they support miniscript, multiple branches definitions and use default derivations `/{0,1}/*`. Check out [descriptors.md](./descriptors.md) for details.
+
+Example of the multisig wallet import code:
+
+```
+addwallet My multisig&wsh(sortedmulti(2,[b317ec86/48h/1h/0h/2h]tpubDEToKMGFhyuP6kfwvjtYaf56khzS1cUcwc47C6aMH6bQ8sNVLMcCK6jr21YDCkU2QhTK5CAnddhfgZ8dD4EL1wGCaAKZaGFeVVdXHaJMTMn,[f04828fe/48h/1h/0h/2h]tpubDFekS5zvPSdW6WWjH2p7vPRkxmeeNGnirmj36AUyoAYbJvfKBj6UARWR5gQ6FRrr98dzT1XFTi6rfGo9AAAeutY1S6SoWijQ8BKxDhYQzDR,[d3c05b2e/48h/1h/0h/2h]tpubDFnAczXQTHxuBh7FxrpLDHBidkC1Di54pTPSPMu4AQjKziFQQTTEFXEVugqm8ucKQhJfLGesBjRZWtLpqAkAmecoXtvaPwCzf4teqrY7Uu5))
+```
+
+It will promt the user and then create a wallet called "My multisig" with 2 of 3 multisig policy with sorted public keys.
+
+### Signing transaction
+
+Just display a base64-encoded PSBT transaction as a QR code.
+
+We also added one special case for bip32 derivations - if fingerprint in derivation is set to `00000000` it is replaced by the fingerprint of the device. We treat this fingerprint as a mark from software wallet that it doesn't know the fingerprint of the device.
+
+In this case PSBT transaction can be constructed with a correct derivation path even if fingerprint is not known to the software wallet, but the derivation path is known - for example when `zpub` or `ypub` is imported software wallet knows the depth of the derivation (normally `3`), purpose (`84` for `zpub` and `49` for `ypub`), coin type (`0` - Mainnet for `zpub` and `ypub`, `1` - Testnet for `upub` or `vpub`) and master key child number. So `zpub` and `ypub` normally contain full derivation path of the key without master fingerprint.
+
+Signed transaction is also displayed as a base64-encoded PSBT transaction with all unnecessary fields removed - only global transaction and partial signatures for all inputs remain there. All other fields are removed to save space in the QR code. This means that software wallet needs to keep original PSBT and combine them when signed PSBT is scanned.
+
+## USB communication
+
+We use human-readable plain text messages, because we can and they are way easier to debug even though they are not optimal in sense of space. Each command should end with `\r` or `\r\n`.
+
+The following commands are supported:
+
+- `fingerprint` - returns hex fingerprint of the root key.
+- `xpub <derivation>` - returns xpub with derivation. For hardened derivation both `h` and `'` can be used. For example `xpub m/84h/1h/0h`.
+- `sign <psbt>` - asks user to confirm transaction signing.
+- `showaddr <type> <derivation> [witness_script_hex]` - show address of `type` with `derivation`. `type` can be `wpkh`, `sh-wpkh`, `pkh`, `sh`, `sh-wsh` or `wsh`. Witness script is required for non-pkh wallets.
+- `importwallet <wallet_name>&<descriptor>` - asks user to confirm adding new `wallet` with `descriptor`.
+
+## SD card
+
+`.psbt` and `.txt` files are supported. The content of the file is processed like a USB or QR code, so it can be a transaction, wallet import command or address verification command.
diff --git a/docs/datasheets/Mikroe-Rakinda-LV3296.pdf b/docs/datasheets/Mikroe-Rakinda-LV3296.pdf
new file mode 100644
index 0000000..c9901b4
Binary files /dev/null and b/docs/datasheets/Mikroe-Rakinda-LV3296.pdf differ
diff --git a/docs/datasheets/Waveshare-GROW-GM65-S.pdf b/docs/datasheets/Waveshare-GROW-GM65-S.pdf
new file mode 100755
index 0000000..a7fba80
Binary files /dev/null and b/docs/datasheets/Waveshare-GROW-GM65-S.pdf differ
diff --git a/docs/descriptors.md b/docs/descriptors.md
new file mode 100644
index 0000000..dedc0fd
--- /dev/null
+++ b/docs/descriptors.md
@@ -0,0 +1,40 @@
+# Descriptors support
+
+All normal Bitcoin descriptors work. Aside from that we have a few extensions:
+
+
+## Multiple branches in descriptors
+
+To save some space in the QR codes we allow adding descriptors with multiple branches in one go. If you want to use `wpkh(xpub/0/*)` for receiving addresses and `wpkh(xpub/1/*)` for change addresses you can combine them in a single descriptor: `wpkh(xpub/{0,1}/*)` - the wallet will treat first index of the `{}` set part as the branch for receiving addresses and the second one as change addresses.
+
+You can also specify more than two branches, and branch indexes can be different for different cosigners, so this descriptor is very weird but totally valid:
+
+```
+wsh(sortedmulti(2,xpubA/{22,33,44}/*,xpubB/34/*/{1,8,6},pubkey3))
+```
+
+Here for receiving address number 17 the wallet will use the script from `wsh(sortedmulti(2,xpubA/22/17,xpubB/34/17/1,pubkey3))`.
+
+The only requirement is that the number of indexes in all sets is the same (3 in the case above).
+
+## Default derivations
+
+If the descriptor contains master public keys but doesn't contain wildcard derivations, the default derivation `/{0,1}/*` will be added to all extended keys in the descriptor. If at least one of the xpubs has a wildcard derivation the descriptor will not be changed.
+
+The descriptor `wpkh(xpub)` will be converted into `wpkh(xpub/{0,1}/*)`.
+
+## Miniscript
+
+Specter supports miniscript, but doesn't support policy-to-miniscript compilation (because it's way too expensive). We perform some checks on the miniscipt, so only `B` scripts are allowed on the top level and all arguments in sub-miniscripts have to have properties according to the [spec](http://bitcoin.sipa.be/miniscript/).
+
+You can use http://bitcoin.sipa.be/miniscript/ to generate a descriptor from a policy and then import it to the wallet.
+
+For example, a policy "I can spend now, or in 100 days my wife can spend" can be converted into the wallet like so:
+
+Policy: `or(9@pk(xpubA),and(older(14400),pk(B)))` (my key is 9-times more likely)
+
+Miniscript: `or_d(pk(xpubA),and_v(v:pkh(xpubB),older(14400)))`
+
+Descriptor: `wsh(or_d(pk(xpubA),and_v(v:pkh(xpubB),older(14400))))`
+
+As here we don't have any wildcard derivations the default derivations of `/{0,1}/*` will be appended to the xpubs.
diff --git a/docs/development.md b/docs/development.md
new file mode 100644
index 0000000..3cd2044
--- /dev/null
+++ b/docs/development.md
@@ -0,0 +1,42 @@
+# Developer notes for Specter-DIY
+
+## Compiling the code yourself
+
+See the [build documentation](build.md) for instructions on how to compile the code.
+
+## Enabling developer mode
+
+By default developer mode and USB communication are turned off. This means that when you connect the board to the computer it will NOT mount the `PYBFLASH` anymore and there will be no way to connect to debug shell.
+
+
+~~To turn on the developer mode get to the main screen (enter PIN code, generate recovery phrase, enter password), and then go to **Settings - Security - turn on Developer mode - Save**.~~
+(Currently deactivated for securtiy reasons)
+
+~~Now the board will restart and get mounted to the computer as before. You can also connect to the board over miniUSB and get to interactive console (baudrate 115200). You can use `screen` or `putty` or `minicom` for that, i.e. `screen /dev/tty.usbmodem14403 115200`.~~
+
+In order to connect to the board, modify those lines in [boot.py](https://github.com/cryptoadvance/specter-diy/blob/2f51e152bcdb184cf719792e6c5f972214e3dd36/boot/main/boot.py#L33-L40) like this:
+```python
+# configure usb from start if you want,
+# otherwise will be configured after PIN
+pyb.usb_mode("VCP+MSC") # debug mode with USB and mounted storages from start
+#pyb.usb_mode("VCP") # debug mode with USB from start
+# disable at start
+# pyb.usb_mode(None)
+```
+
+and after flashing, you can connect with something like:
+```
+# Linux
+screen /dev/ttyACM0 115200 # or maybe ttyACM1 or ttyACM2
+# Mac
+screen /dev/tty.usbmodem14403 115200`.
+```
+
+
+## Writing a simple app
+
+Specter can be extended with custom apps. Most of the functionality is already splitted into apps, like `WalletManager` to manage your wallets, `MessageApp` to sign bitcoin messages, `XpubApp` to show master public keys etc.
+
+Check out the [apps](../src/apps) folder to understand how they work.
+
+TODO: More detailed description
diff --git a/docs/enclosures/README.md b/docs/enclosures/README.md
new file mode 100644
index 0000000..eff0c8a
--- /dev/null
+++ b/docs/enclosures/README.md
@@ -0,0 +1,41 @@
+# Enclosures for Specter-DIY
+
+There are a few case designs made by the community:
+
+## Specter-DIY Snap Case
+
+
+
+Print it yourself enclosure with the waveshare scanner on the backside.
+
+The printable STL files are available for download in the [snapcase](./snapcase/) folder.
+
+Please note that the prints are quite tight around the hardware components. They are well tested with a Prusa MK3s and Specter hardware components from late 2022. Other printers or newer or older hardware may produce results that do not fit. Please check carefully that the prints do not exert pressure on any hardware components and don't exert any pressure yourself.
+
+Contact me if you have any questions or suggestions. Success stories are also very welcome. :) You can reach me on [X (@kayth21)](https://x.com/kayth21) or on [Telegram (@kayth_21)](https://t.me/kayth_21).
+
+You can also buy a Snap Case, or a fully assembled Specter-DIY, from [bitcoin-store.org](https://bitcoin-store.org).
+
+## SeedSigner's "Barebones" enclosure, v2
+
+Updated design from @SeedSigner (Twitter/Telegram) with a smaller form factor & MicroSD access.
+
+The printable .STL files for v1 and v2 are available for download from the [docs/enclosures/seedsigner](./seedsigner/) folder.
+
+You can also buy the v2, or a fully assembled Specter-DIY, from [his shop](https://btc-hardware-solutions.square.site/).
+
+(E.U. residents can contact @surfacePlasmon (Twitter) or @daz21 (Telegram) to purchase an enclosure via mail or visit diynodes.com)
+
+
+
+## Full metal DIY
+
+
+
+https://github.com/davewhiiite/wraith
+
+## Enclosure by Thomas
+
+
+
+[3d files](./thomas)
diff --git a/docs/enclosures/seedsigner/BBv1_Lower.stl b/docs/enclosures/seedsigner/BBv1_Lower.stl
new file mode 100644
index 0000000..4f200bf
Binary files /dev/null and b/docs/enclosures/seedsigner/BBv1_Lower.stl differ
diff --git a/docs/enclosures/seedsigner/BBv1_Upper.stl b/docs/enclosures/seedsigner/BBv1_Upper.stl
new file mode 100644
index 0000000..497c6ed
Binary files /dev/null and b/docs/enclosures/seedsigner/BBv1_Upper.stl differ
diff --git a/docs/enclosures/seedsigner/BBv2_Lower.stl b/docs/enclosures/seedsigner/BBv2_Lower.stl
new file mode 100644
index 0000000..2eec9a1
Binary files /dev/null and b/docs/enclosures/seedsigner/BBv2_Lower.stl differ
diff --git a/docs/enclosures/seedsigner/BBv2_Upper.stl b/docs/enclosures/seedsigner/BBv2_Upper.stl
new file mode 100644
index 0000000..50d5397
Binary files /dev/null and b/docs/enclosures/seedsigner/BBv2_Upper.stl differ
diff --git a/docs/enclosures/snapcase/README.md b/docs/enclosures/snapcase/README.md
new file mode 100644
index 0000000..62b1b92
--- /dev/null
+++ b/docs/enclosures/snapcase/README.md
@@ -0,0 +1,52 @@
+# Specter-DIY Snap Case
+
+
+
+Specter-DIY Snap Case is a print it yourself enclosure with the waveshare scanner on the backside. It consists of a scanner part, in which the scanner is held and the cables are fixed, and a frontside and a backside part, which can be plugged together.
+
+## Please note
+
+The prints are quite tight around the hardware components. They are well tested with a Prusa MK3s and Specter hardware components from late 2022. Other printers or newer or older hardware may produce results that do not fit. Please check carefully that the prints do not exert pressure on any hardware components and don't exert any pressure yourself.
+
+## Assembly
+
+Please note that this manual assumes that you are familiar with the basic assembly of a Specter-DIY and therefore only addresses the specialties associated with this case. If not, please head over to the [docs](../../).
+
+### Print all the parts
+
+
+
+- The SDL files are attached to this site.
+
+### Remove all screws from the scanner
+
+
+
+### Mount the scanner module
+
+
+
+- Use the two small screws to lock the scanner in the designated position.
+
+### Connect the scanner to the board
+
+
+
+- Place the middle part on the board.
+- Slide the cables through the channels.
+- Connect the cables through the pins to the corresponding slots.
+
+### Plug together the case
+
+
+
+- Please double check that the parts are right side up.
+- Because of the snaps, you need a little pressure to put them together. Before you put them together, please make sure that the top part fits well over the display.
+
+## Contact
+
+Contact me if you have any questions or suggestions. Success stories are also very welcome. :) You can reach me on [X (@kayth21)](https://x.com/kayth21) or on [Telegram (@kayth_21)](https://t.me/kayth_21).
+
+## Shop
+
+You can also buy a Snap Case, or a fully assembled Specter-DIY, from [bitcoin-store.org](https://bitcoin-store.org).
\ No newline at end of file
diff --git a/docs/enclosures/snapcase/Specter-DIY Snap Case - Backside.stl b/docs/enclosures/snapcase/Specter-DIY Snap Case - Backside.stl
new file mode 100644
index 0000000..0e8ea89
Binary files /dev/null and b/docs/enclosures/snapcase/Specter-DIY Snap Case - Backside.stl differ
diff --git a/docs/enclosures/snapcase/Specter-DIY Snap Case - Frontside.stl b/docs/enclosures/snapcase/Specter-DIY Snap Case - Frontside.stl
new file mode 100644
index 0000000..c5c8032
Binary files /dev/null and b/docs/enclosures/snapcase/Specter-DIY Snap Case - Frontside.stl differ
diff --git a/docs/enclosures/snapcase/Specter-DIY Snap Case - Scanner.stl b/docs/enclosures/snapcase/Specter-DIY Snap Case - Scanner.stl
new file mode 100644
index 0000000..d3c7599
Binary files /dev/null and b/docs/enclosures/snapcase/Specter-DIY Snap Case - Scanner.stl differ
diff --git a/docs/enclosures/thomas/DIY-Front-Display-v0.12.stl b/docs/enclosures/thomas/DIY-Front-Display-v0.12.stl
new file mode 100644
index 0000000..16d7275
Binary files /dev/null and b/docs/enclosures/thomas/DIY-Front-Display-v0.12.stl differ
diff --git a/docs/enclosures/thomas/DIY-Platte-v0.21.stl b/docs/enclosures/thomas/DIY-Platte-v0.21.stl
new file mode 100644
index 0000000..a96023a
Binary files /dev/null and b/docs/enclosures/thomas/DIY-Platte-v0.21.stl differ
diff --git a/docs/enclosures/thomas/Scan_case-v0.2.stl b/docs/enclosures/thomas/Scan_case-v0.2.stl
new file mode 100644
index 0000000..28c0d34
Binary files /dev/null and b/docs/enclosures/thomas/Scan_case-v0.2.stl differ
diff --git a/docs/faq.md b/docs/faq.md
new file mode 100644
index 0000000..a958985
--- /dev/null
+++ b/docs/faq.md
@@ -0,0 +1,80 @@
+# General Questions
+
+## *What do I need to build Specter-DIY?*
+
+To build Specter yourself you need:
+
+ - STM32F469 discovery board
+ - QR Code scanner from Waveshare
+ - Power Bank
+ - miniUSB cable
+ - A few pin connectors
+
+[Shopping list link](https://github.com/cryptoadvance/specter-diy/blob/master/docs/shopping.md) + [assembly link](https://github.com/cryptoadvance/specter-diy/blob/master/docs/assembly.md)
+Waveshare QR scanner is recommended as it has a good quality/price ratio.
+
+## *Is specter-DIY safe to use?*
+
+Yes, kinda. The security level of Specter-DIY is comparable to commercial hardware wallets present on the market. We implemented a secure bootloader that verifies firmware upgrades, so you can be sure that only signed firmware can be uploaded to the device after initial setup.
+
+Note that *initial* firmware installation is *not verified* and the security of this process is limited to the security of your computer. During initial installation make sure you verified PGP signatures and flash the firmware from a secure computer.
+
+## *I'm wondering what if someone takes the device? How does Specter-DIY approach this scenario?*
+
+There are no known attacks that would allow extraction of the keys from the device - our secure bootloader sets a security flag of the microcontroller and the only thing the attacker can do is erase the device completely and install malicious firmware.
+
+To mitigate this attack Specter-DIY has "anti-phishing words" on the PIN screen that are displayed when you start entering the PIN code. These words are unique for every device and will change if the device is erased. So make sure these words remain the same when you are entering the PIN code.
+
+By default the device operates in amnesic mode - it forgets your recovery phrase when you power it off. This means you need to enter your recovery phrase every time when you use the device. Optionally you can save the recovery phrase on the device itself, or on the SD card. In the latter case, the SD card works as a second factor - you can access your keys only if you have both the device and the SD card.
+
+## *Currently there is a `specter_hwi.py` file, which implements the HWIClient for Specter-DIY. Is there any reason you didn't add that directly to HWI?*
+
+We do not plan to add Specter-DIY to HWI - we discourage USB as a communication channel for Specter-DIY. Use QR codes or SD card instead.
+
+## *Do you have a physical security design?*
+
+Physical security of Specter-DIY is limited to the security features available on the microcontroller. It theoretically can be hacked using glitching attacks, but they were not demonstrated on this MCU series.
+
+We also have support for secure smartcards as key storage, but it requires a special adaptor board (Specter Shield). We are planning to add support for off-the-shelf smartcard readers, but no time estimates here.
+
+## *Is there a simulator I can try the Specter-DIY with?*
+
+Yes. Specter-DIY has a [simulator](https://github.com/cryptoadvance/specter-diy/blob/master/docs/simulator.md).
+
+## *How do I load firmware updates to Specter-DIY?*
+
+Initial setup on an empty board happens over miniUSB, but this is the only time you need to connect your device to the computer. After that you need to use SD card for upgrades - insert an SD card with upgrade file to the device and turn it on. Integrity and signatures of the upgrade file are checked by the secure bootloader.
+
+## *Can Specter-DIY register cosigner xpubs like ColdCard? I know you wipe private keys on shutdown, but do you save stuff like that?*
+
+Yes, we keep wallet descriptors and other public info.
+
+## *Once you add the javacard (secure element) you'll save the private keys, too?*
+
+With the secure element you will have three options:
+
+ - agnostic mode, forgets key after shutdown
+ - store key on the smartcard but do all crypto on application MCU
+ - store key and do crypto on the secure element
+
+At the moment, we have implementation for the first two options. Last seems to be the most secure, but then you need to trust proprietary crypto implementation. The second option saves the private key on the secure element under pin protection, and it can be encrypted, so the secure element never knows the private keys.
+
+# Troubleshooting questions
+
+# I can't flash my device via Mini-USB ?
+
+There is a file called `FAIL.txt` saying `The interface firmware FAILED to reset/halt the target MCU`
+
+The Device is probably protected. You can't upgrade via MiniUSB anymore but just via SD-card. Please carefully read the Release-notes.
+
+# I want to do a factory-reset. How can i remove the protection?
+
+https://github.com/cryptoadvance/specter-bootloader/blob/master/doc/remove_protection.md
+
+## *Does anyone have any tips on mounting the power bank and QR code scanner to the STM32 board in a somewhat ergonomic manner?*
+
+Use the smallest powerbank possible. Check out the [gallery](https://github.com/cryptoadvance/specter-diy/blob/master/docs/pictures/gallery/README.md) to see how people do it.
+
+
+
+
diff --git a/docs/pictures/gallery/README.md b/docs/pictures/gallery/README.md
new file mode 100644
index 0000000..a4fe0ba
--- /dev/null
+++ b/docs/pictures/gallery/README.md
@@ -0,0 +1,74 @@
+# Gallery
+
+Here are a few pictures from people who assembled their own Specter.
+
+If you did it as well we will be happy to put it here.
+
+### @kayth21
+
+
+
+Created with a Prusa MK3s using the template from [enclosures/snapcase](../../enclosures/snapcase).
+
+### @davewhiiite
+
+
+
+### @seedsigner
+
+
+
+### @lunaticoin
+
+
+
+### @Thomas1378
+
+
+
+### @bitcoinheiro
+
+
+
+Created 3d printed storage box for this setup with small battery attached and waveshare scanner on the side. Available at https://www.tinkercad.com/things/46xyXAhv0Fy
+
+### @kkdao
+
+
+
+### @dimaatmelodromru
+
+
+
+### @k9ert
+
+
+
+### @gorazdko
+
+
+
+### @bavarianledger
+
+
+
+### @kdmukai
+
+
+
+### @stepansnigirev
+
+
+
+### @davewhiiite
+
+
+
+
+
+### Re-use the original packaging of the STM32F469I-DISCO @henrik
+
+
+
+
+### @you?
diff --git a/docs/pictures/gallery/barebones_v2.png b/docs/pictures/gallery/barebones_v2.png
new file mode 100644
index 0000000..b365a47
Binary files /dev/null and b/docs/pictures/gallery/barebones_v2.png differ
diff --git a/docs/pictures/gallery/bavarianledger.jpg b/docs/pictures/gallery/bavarianledger.jpg
new file mode 100644
index 0000000..afcebcb
Binary files /dev/null and b/docs/pictures/gallery/bavarianledger.jpg differ
diff --git a/docs/pictures/gallery/bitcoinhero.jpg b/docs/pictures/gallery/bitcoinhero.jpg
new file mode 100644
index 0000000..74a0729
Binary files /dev/null and b/docs/pictures/gallery/bitcoinhero.jpg differ
diff --git a/docs/pictures/gallery/davewhiiite.jpg b/docs/pictures/gallery/davewhiiite.jpg
new file mode 100644
index 0000000..f1e29bd
Binary files /dev/null and b/docs/pictures/gallery/davewhiiite.jpg differ
diff --git a/docs/pictures/gallery/davewhiiite1.jpg b/docs/pictures/gallery/davewhiiite1.jpg
new file mode 100644
index 0000000..cb2f2c7
Binary files /dev/null and b/docs/pictures/gallery/davewhiiite1.jpg differ
diff --git a/docs/pictures/gallery/davewhiiite2.jpg b/docs/pictures/gallery/davewhiiite2.jpg
new file mode 100644
index 0000000..1c66a08
Binary files /dev/null and b/docs/pictures/gallery/davewhiiite2.jpg differ
diff --git a/docs/pictures/gallery/davewhiiite3.jpg b/docs/pictures/gallery/davewhiiite3.jpg
new file mode 100644
index 0000000..4447b72
Binary files /dev/null and b/docs/pictures/gallery/davewhiiite3.jpg differ
diff --git a/docs/pictures/gallery/dimaatmelodromru.jpg b/docs/pictures/gallery/dimaatmelodromru.jpg
new file mode 100644
index 0000000..faaccae
Binary files /dev/null and b/docs/pictures/gallery/dimaatmelodromru.jpg differ
diff --git a/docs/pictures/gallery/gorazdko.jpg b/docs/pictures/gallery/gorazdko.jpg
new file mode 100644
index 0000000..3111025
Binary files /dev/null and b/docs/pictures/gallery/gorazdko.jpg differ
diff --git a/docs/pictures/gallery/k9ert.jpg b/docs/pictures/gallery/k9ert.jpg
new file mode 100644
index 0000000..df75088
Binary files /dev/null and b/docs/pictures/gallery/k9ert.jpg differ
diff --git a/docs/pictures/gallery/kdmukai.jpg b/docs/pictures/gallery/kdmukai.jpg
new file mode 100644
index 0000000..fc6307b
Binary files /dev/null and b/docs/pictures/gallery/kdmukai.jpg differ
diff --git a/docs/pictures/gallery/kkdao.jpg b/docs/pictures/gallery/kkdao.jpg
new file mode 100644
index 0000000..8e034dd
Binary files /dev/null and b/docs/pictures/gallery/kkdao.jpg differ
diff --git a/docs/pictures/gallery/lunaticoin.jpg b/docs/pictures/gallery/lunaticoin.jpg
new file mode 100644
index 0000000..065ee30
Binary files /dev/null and b/docs/pictures/gallery/lunaticoin.jpg differ
diff --git a/docs/pictures/gallery/org_packaging_signer_1.jpg b/docs/pictures/gallery/org_packaging_signer_1.jpg
new file mode 100644
index 0000000..fb0130e
Binary files /dev/null and b/docs/pictures/gallery/org_packaging_signer_1.jpg differ
diff --git a/docs/pictures/gallery/org_packaging_signer_2.jpg b/docs/pictures/gallery/org_packaging_signer_2.jpg
new file mode 100644
index 0000000..064f8d9
Binary files /dev/null and b/docs/pictures/gallery/org_packaging_signer_2.jpg differ
diff --git a/docs/pictures/gallery/org_packaging_signer_3.jpg b/docs/pictures/gallery/org_packaging_signer_3.jpg
new file mode 100644
index 0000000..21aef9d
Binary files /dev/null and b/docs/pictures/gallery/org_packaging_signer_3.jpg differ
diff --git a/docs/pictures/gallery/snap-case-bronze-black-1.jpg b/docs/pictures/gallery/snap-case-bronze-black-1.jpg
new file mode 100644
index 0000000..95ea57a
Binary files /dev/null and b/docs/pictures/gallery/snap-case-bronze-black-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-connect-scanner-1.jpg b/docs/pictures/gallery/snap-case-connect-scanner-1.jpg
new file mode 100644
index 0000000..5efaf9b
Binary files /dev/null and b/docs/pictures/gallery/snap-case-connect-scanner-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-double-1.jpg b/docs/pictures/gallery/snap-case-double-1.jpg
new file mode 100644
index 0000000..3c5c9fc
Binary files /dev/null and b/docs/pictures/gallery/snap-case-double-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-double-2.jpg b/docs/pictures/gallery/snap-case-double-2.jpg
new file mode 100644
index 0000000..ffcb5c3
Binary files /dev/null and b/docs/pictures/gallery/snap-case-double-2.jpg differ
diff --git a/docs/pictures/gallery/snap-case-mount-scanner-1.jpg b/docs/pictures/gallery/snap-case-mount-scanner-1.jpg
new file mode 100644
index 0000000..5792c27
Binary files /dev/null and b/docs/pictures/gallery/snap-case-mount-scanner-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-plug-together-1.jpg b/docs/pictures/gallery/snap-case-plug-together-1.jpg
new file mode 100644
index 0000000..2ca58ed
Binary files /dev/null and b/docs/pictures/gallery/snap-case-plug-together-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-printed-parts-1.jpg b/docs/pictures/gallery/snap-case-printed-parts-1.jpg
new file mode 100644
index 0000000..56a261e
Binary files /dev/null and b/docs/pictures/gallery/snap-case-printed-parts-1.jpg differ
diff --git a/docs/pictures/gallery/snap-case-remove-screws-from-scanner-1.jpg b/docs/pictures/gallery/snap-case-remove-screws-from-scanner-1.jpg
new file mode 100644
index 0000000..bac449d
Binary files /dev/null and b/docs/pictures/gallery/snap-case-remove-screws-from-scanner-1.jpg differ
diff --git a/docs/pictures/gallery/stepansnigirev.jpg b/docs/pictures/gallery/stepansnigirev.jpg
new file mode 100644
index 0000000..7fbd5c8
Binary files /dev/null and b/docs/pictures/gallery/stepansnigirev.jpg differ
diff --git a/docs/pictures/gallery/thomas.jpg b/docs/pictures/gallery/thomas.jpg
new file mode 100644
index 0000000..aff057a
Binary files /dev/null and b/docs/pictures/gallery/thomas.jpg differ
diff --git a/docs/pictures/init_screens.jpg b/docs/pictures/init_screens.jpg
new file mode 100644
index 0000000..454fb1d
Binary files /dev/null and b/docs/pictures/init_screens.jpg differ
diff --git a/docs/pictures/kit.jpg b/docs/pictures/kit.jpg
new file mode 100644
index 0000000..3aeb176
Binary files /dev/null and b/docs/pictures/kit.jpg differ
diff --git a/docs/pictures/kit_with_case.jpg b/docs/pictures/kit_with_case.jpg
new file mode 100644
index 0000000..deabc2b
Binary files /dev/null and b/docs/pictures/kit_with_case.jpg differ
diff --git a/docs/pictures/wallet_screens.jpg b/docs/pictures/wallet_screens.jpg
new file mode 100644
index 0000000..5262527
Binary files /dev/null and b/docs/pictures/wallet_screens.jpg differ
diff --git a/docs/pictures/waveshare_wiring.jpg b/docs/pictures/waveshare_wiring.jpg
new file mode 100644
index 0000000..bc4802b
Binary files /dev/null and b/docs/pictures/waveshare_wiring.jpg differ
diff --git a/docs/quickstart.md b/docs/quickstart.md
new file mode 100644
index 0000000..441e54d
--- /dev/null
+++ b/docs/quickstart.md
@@ -0,0 +1,37 @@
+# Installing the compiled code
+
+With the secure bootloader initial installation of the firmware is slightly different. Upgrades are easier and don't require to connect hardware wallet to the computer.
+
+## Flashing initial firmware
+
+**Note** If you don't want to use binaries from the releases check out the [bootloader documentation](https://github.com/cryptoadvance/specter-bootloader/blob/master/doc/selfsigned.md) that explains how to compile and configure it to use your public keys instead of ours.
+
+- If you are upgrading from versions below `1.4.0` or uploading the firmware for the first time, use the `initial_firmware_<version>.bin` from the [releases](https://github.com/cryptoadvance/specter-diy/releases) page.
+ - Verify the signature of the `sha256.signed.txt` file against [Stepan's PGP key](https://stepansnigirev.com/ss-specter-release.asc)
+ - Verify the hash of the `initial_firmware_<version>.bin` against the hash stored in the `sha256.signed.txt`
+- If you are upgrading from an empty bootloader or you see the bootloader error message that firmware is not valid, check out the next section - [Flashing signed Specter firmware](#flashing-signed-specter-firmware).
+- Make sure the [power jumper](./assembly.md) of your discovery board is at STLK position
+- Connect the discovery board to your computer via the **miniUSB** cable on the top of the board.
+ - The board should appear as a removable disk named `DIS_F469NI`.
+- Copy the `initial_firmware_<version>.bin` file into the root of the `DIS_F469NI` filesystem.
+- When the board is done flashing the firmware the board will reset itself and reboot to the bootloader. Bootloader will check the firmware and boot into the main firmware. If see an error message that no firmware is found - follow the update instructions and upload firmware via SD card.
+- Now you can switch the power jumper where you like it and power the board from the powerbank or battery.
+
+> Flashing initial firmware via copy-paste of the `.bin` file sometimes fails - often because of the cable, or if you connect the device through a USB hub. In this case you can try a few more times (normally works in 2-3 attempts).
+>
+> If it fails all the time you can use [stlink](https://github.com/stlink-org/stlink/releases/latest) open-source tool. Install it and type in your terminal: `st-flash write <path/to/initial_firmare.bin> 0x8000000`. It usually works much more reliable.
+
+## Upgrading firmware
+
+- Download the `specter_upgrade_<version>.bin` from the [releases](https://github.com/cryptoadvance/specter-diy/releases).
+- Copy this binary to the root of the SD card (FAT-formatted, 32 GB max)
+ - Make sure only one `specter_upgrade***.bin` file is in the root directory
+- Insert SD card to the SD slot of the discovery board and power on the board
+- Bootloader will flash the firmware and will notify you when it's done.
+- Reboot the board - you will see Specter-DIY interface now, it will suggest you to select your PIN code
+
+Whenever a new release is out just download the `specter_upgrade_<version>.bin` from the releases, drop it to the SD card and upgrade the device just like in the previous step. Bootloader will make sure only signed firmware can be loaded to the board.
+
+## How to find out firmware version
+
+Go to the `Device settings` menu - it will show the version number under the title of the screen.
diff --git a/docs/reproducible-build.md b/docs/reproducible-build.md
new file mode 100644
index 0000000..a258474
--- /dev/null
+++ b/docs/reproducible-build.md
@@ -0,0 +1,38 @@
+# Reproducible build
+
+With [docker](https://docs.docker.com/get-docker/) you can build the firmware yourself in the same environment as we do, and verify that binaries in github releases have the same hash. This way you can be sure that firmware upgrades signed by our public keys are actually built from the code in this repository, no backdoors included.
+
+From the root of the repository:
+
+1. Set up bootloader to use production keys:
+
+```sh
+cp bootloader/keys/production/pubkeys.c bootloader/keys/selfsigned/
+```
+
+2. Build a docker container:
+
+```sh
+docker build -t diy .
+```
+
+3. Run the container in interactive mode:
+
+```sh
+docker run -ti -v `pwd`:/app diy
+```
+
+At the end of the build you will be presented with a base32 encoded hash of the firmware upgrade file that should be signed and asked to provide signatures.
+
+Get signatures from the description of the github release and enter one by one in the same order as provided in the release.
+
+After adding signatures binaries in the `release` folder should be exactly the same as in github release. Hashes of the binaries will be saved to `release/sha256.txt`.
+
+# Apple M1 users
+
+For Apple M1 add a plafrom flag to the docker commands:
+
+```sh
+docker build -t diy . --platform linux/x86_64
+docker run --platform linux/amd64 -ti -v `pwd`:/app diy
+```
diff --git a/docs/roadmap.md b/docs/roadmap.md
new file mode 100644
index 0000000..4bdffbd
--- /dev/null
+++ b/docs/roadmap.md
@@ -0,0 +1,18 @@
+# Roadmap for Specter-DIY development
+
+Security critical features:
+
+- optional secure bootloader checking signatures on the firmware
+- secure poweroff that erases all the secrets from RAM
+- moving device secret to the very beginning of the flash or even to the bootloader
+- add tests, fuzzing etc
+- optimize the code
+
+Documentation:
+
+- firmware protection instructions with tools from STM
+
+Would be nice to add:
+
+- Devkit (WIP)
+- SD card support
diff --git a/docs/security.md b/docs/security.md
new file mode 100644
index 0000000..ba26d9a
--- /dev/null
+++ b/docs/security.md
@@ -0,0 +1,44 @@
+# Security of Specter-DIY
+
+## Hardware
+
+Display is contolled by application MCU.
+
+Secure element integration is not there yet - at the moment secrets are also stored on the main MCU. But you can use the wallet without storing the secret - you need to enter your recovery phrase every time. Why to remember long passphrase if you can remember the whole mnemonic?
+
+Device uses external flash to store some files (QSPI), but all user files are signed by the wallet and checked when loaded.
+
+QR scanning functionality is on a separate microcontroller so all image processing happens outside of security-critical MCU. At the moment USB and SD card are still managed by the main MCU, so don't use SD card and USB if you want to reduce attack surface.
+
+## PIN protection (user authentication)
+
+During the first boot a unique secret is generated on the main MCU. This secret allows you to verify that the device was not replaced by a malicious one - when you enter the PIN code you see a list of words that will remain the same while the secret is there.
+
+Your PIN code together with this unique secret are used to generate a decryption key for your Bitcoin keys (if you store them). So if the attacker would be able to bypass PIN screen, decryption will still fail.
+
+If you have locked the firmware (TODO: add instructions link here) it will effectively lock the secret as well, so if the attacker flashes different firmware to the board the secret gets erased and you will be able to recognize it when you start entering PIN code - words sequence will be different.
+
+## Generation of the recovery phrase
+
+This is one of the most important parts of the wallet - to generate the key securely. To do this well we use multiple sources of entropy:
+
+- TRNG of the microcontroller. Proprietary, certified and probably good but we don't trust it
+- Touchscreen. Every time you touch the screen we measure the position and the moment when this touch happened (in microcontroller ticks at 180MHz).
+- Built-in microphones - not yet. The board has two microphones, so hardware wallet can listen to you and mix in this data to the entropy pool.
+
+All this entropy is hashed together and converted to your recovery phrase. The resulting entropy is always better than any of the individual sources.
+
+## High level logic - wallets
+
+Specter operates as a key storage. It holds HD private keys that can be involved in wallets. Wallets are defined by their [descriptors](./descriptors.md). We support miniscript as well.
+
+Every wallet belongs to a particular network. This means that if you imported a wallet on `testnet` it will not be available on `mainnet` or `regtest` - you need to switch to this network and import the wallet separately.
+
+## Transactions verification
+
+The following rules apply to transactions that wallet will sign:
+
+- if mixed inputs from different wallets are found the user is warned ([attack](https://blog.trezor.io/details-of-the-multisig-change-address-issue-and-its-mitigation-6370ad73ed2a))
+- change outputs show the name of the wallet they are sent to
+- to use a multisig or miniscript you first need to import the wallet by adding wallet descriptor (over QR, USB or SD card)
+
diff --git a/docs/shopping.md b/docs/shopping.md
new file mode 100644
index 0000000..e2c4e8b
--- /dev/null
+++ b/docs/shopping.md
@@ -0,0 +1,48 @@
+# Shopping list for Specter-DIY
+
+Here we describe what to buy, and in [assembly.md](./assembly.md) we explain how to put it together and a few notes about the board - power jumpers, USB ports etc.
+
+## Discovery board
+
+Main part of the device is the developer board:
+
+- STM32F469I-DISCO developer board (i.e. from [Mouser](https://eu.mouser.com/ProductDetail/STMicroelectronics/STM32F469I-DISCO?qs=kWQV1gtkNndotCjy2DKZ4w==) or [Digikey](https://www.digikey.com/product-detail/en/stmicroelectronics/STM32F469I-DISCO/497-15990-ND/5428811))
+- **Mini**USB cable
+- Standard MicroUSB cable to communicate over USB
+
+Optional but recommended:
+- [Waveshare QR code scanner](https://www.waveshare.com/barcode-scanner-module.htm) with long pin headers like [these](https://eu.mouser.com/ProductDetail/Samtec/DW-02-10-T-S-571?qs=sGAEpiMZZMvlX3nhDDO4AE5PKXAQeC6NPk%2FcLBS9yKI%3D) or [these](https://www.amazon.com/gp/product/B015KA0RRU/) to connect the scanner to the board (4 pin headers needed).
+
+Check out the assembly video [on youtube](https://youtu.be/1H7FqG_FmCw)
+
+We are currently working on [an extension board](../shield) that includes a smartcard slot, QR code scanner, battery and a 3d printed case, but it doesn't include the main part — discovery board that you need to order separately. This way supply chain attack is still not an issue as the security-critical components are bought from random electronic store.
+
+You can start using Specter even without any extra components, but you will be able to communicate with it over USB or the built-in SD card slot. Using Specter over USB means it is not airgapped so you lose an important security property.
+
+## QR scanner
+
+For QR code scanner you have several options.
+
+**Option 1. Recommended.** Resonably good scanner from Waveshare (40$)
+
+[Waveshare scanner](https://www.waveshare.com/barcode-scanner-module.htm) - you will need to find a way how to mount it nicely, maybe use some kind of Arduino Prototype shield and some ducktape. For wiring see [assembly.md](./assembly.md).
+
+No soldering required, but if you have soldering skills you can make the wallet way nicer ;)
+
+**Option 2.** Very nice scanner from Mikroe but pretty expensive (150$):
+
+[Barcode Click](https://www.mikroe.com/barcode-click) + [Adapter](https://www.mikroe.com/arduino-uno-click-shield)
+
+**Option 3.** Any other QR scanner
+
+You can find some cheap scanners in China. Their quality is often not that great, but you can take a chance. Maybe even ESPcamera would do the job. You only need to connect power, UART (pins D0 and D1), and trigger to D5.
+
+**Option 4.** No scanner.
+
+Then you can only use Specter with USB / SD Card.
+
+Unless you build your own communication module that uses something else instead of QR codes - audiomodem, bluetooth or whatever else. As soon as it can be triggered and send the data over serial you can do whatever you want.
+
+## Optional components
+
+If you add a tiny powerbank or a battery & power charger/booster, your wallet becomes completely self-contained ;)
diff --git a/docs/simulator.md b/docs/simulator.md
new file mode 100644
index 0000000..24ce636
--- /dev/null
+++ b/docs/simulator.md
@@ -0,0 +1,22 @@
+# Simulator
+
+Simulator requires `SDL` library to be installed (`sudo apt install libsdl2-dev` on Linux and `brew install sdl2` on Mac).
+
+Run `make unix` to get it. If everything goes well a `micropython_unix` binary will appear in the `bin` folder.
+
+Start simulator using `make simulate`.
+
+You should see the screen with the wallet interface. As in unixport we don't have QR code scanner or USB connector, so instead it simulates serial communication and USB on TCP ports: `5941` for QR scanner and `8789` for USB connection.
+
+You can connect to these ports using `telnet` and type whatever you expect to be scanned / sent from the host.
+
+The simulator is also printing content of the QR codes displayed on the screen to the console.
+
+The simulator create folders in `./fs`:
+
+- `fs/flash` - files that would be stored in the internal flash of the MCU
+- `fs/qspi` - files in external QSPI chip (untrusted, everything is stored encrypted and authenticated)
+- `fs/ramdisk` - files in external SPIRAM memory (work as temporary storage for host communication, untrusted)
+- `fs/sd` - SD card
+
+
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..cc5e0b1
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,78 @@
+{
+ "nodes": {
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1747046372,
+ "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1685573264,
+ "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "380be19fbd2d9079f677978361792cb25e8a3635",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..8dd6938
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,30 @@
+{
+ description = "Specter DIY development environment";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05";
+ flake-utils.url = "github:numtide/flake-utils";
+ flake-compat = {
+ url = "github:edolstra/flake-compat";
+ flake = false;
+ };
+ };
+
+ outputs = { self, nixpkgs, flake-utils, ... }:
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = nixpkgs.legacyPackages.${system};
+ in
+ {
+ devShells.default = pkgs.mkShell {
+ nativeBuildInputs = [
+ pkgs.buildPackages.gcc-arm-embedded-9
+ pkgs.buildPackages.python39
+ pkgs.openocd
+ pkgs.stlink
+ pkgs.SDL2
+ ];
+ hardeningDisable = ["all"];
+ };
+ });
+}
diff --git a/hwidevice.py b/hwidevice.py
new file mode 100644
index 0000000..06891ba
--- /dev/null
+++ b/hwidevice.py
@@ -0,0 +1,397 @@
+"""
+Hardware Wallet Client Interface
+********************************
+
+The :class:`SpecterClient` is the class to communicate with Specter-DIY hardware wallet.
+"""
+
+import serial
+import serial.tools.list_ports
+import socket, time
+from hwilib.hwwclient import *
+from hwilib.errors import (
+ ActionCanceledError,
+ BadArgumentError,
+ DeviceBusyError,
+ DeviceFailureError,
+ UnavailableActionError,
+)
+import hashlib
+from binascii import a2b_base64, b2a_base64
+
+py_enumerate = enumerate
+
+
+class SpecterClient(HardwareWalletClient):
+ """Create a client for a HID device that has already been opened.
+
+ This abstract class defines the methods
+ that hardware wallet subclasses should implement.
+ """
+
+ # timeout large enough to handle xpub derivations
+ TIMEOUT = 3
+
+ def __init__(self, path: str, password: str = "", expert: bool = False) -> None:
+ """
+ :param path: Path to the device as returned by :func:`~hwilib.commands.enumerate`
+ :param password: A password/passphrase to use with the device.
+ Typically a BIP 39 passphrase, but not always.
+ See device specific documentation for further details.
+ :param expert: Whether to return additional information intended for experts.
+ """
+ super().__init__(path, password, expert)
+ self.simulator = ":" in path
+ if self.simulator:
+ self.dev = SpecterSimulator(path)
+ else:
+ self.dev = SpecterUSBDevice(path)
+
+ def query(self, data: str, timeout: Optional[float] = None) -> str:
+ """Send a text-based query to the device and get back the response"""
+ res = self.dev.query(data, timeout)
+ if res == "error: User cancelled":
+ raise ActionCanceledError("User didn't confirm action")
+ elif res.startswith("error: Unknown command"):
+ raise UnavailableActionError(res[7:])
+ elif res.startswith("error: "):
+ raise BadArgumentError(res[7:])
+ return res
+
+ def get_master_fingerprint(self) -> bytes:
+ """
+ Get the master public key fingerprint as bytes.
+
+ Retrieves the fingerprint of the master public key of a device.
+ Typically implemented by fetching the extended public key at "m/0h"
+ and extracting the parent fingerprint from it.
+
+ :return: The fingerprint as bytes
+ """
+ return bytes.fromhex(self.query("fingerprint", timeout=self.TIMEOUT))
+
+ def get_pubkey_at_path(self, bip32_path: str) -> ExtendedKey:
+ """
+ Get the public key at the BIP 32 derivation path.
+
+ :param bip32_path: The BIP 32 derivation path
+ :return: The extended public key
+ """
+ # this should be fast
+ xpub = self.query("xpub %s" % bip32_path, timeout=self.TIMEOUT)
+ hd = ExtendedKey.deserialize(xpub)
+ # Specter returns xpub with a prefix
+ # for a network currently selected on the device
+ hd.version = b"\x04\x88\xb2\x1e" if self.chain == Chain.MAIN else b"\x04\x35\x87\xcf"
+ return hd
+
+ def sign_tx(self, psbt: PSBT) -> PSBT:
+ """
+ Sign a partially signed bitcoin transaction (PSBT).
+
+ :param psbt: The PSBT to sign
+ :return: The PSBT after being processed by the hardware wallet
+ """
+ response = self.query("sign %s" % psbt.serialize())
+ signed_psbt = PSBT()
+ signed_psbt.deserialize(response)
+ # adding partial sigs to initial tx
+ for i in range(len(psbt.inputs)):
+ for k in signed_psbt.inputs[i].partial_sigs:
+ psbt.inputs[i].partial_sigs[k] = signed_psbt.inputs[i].partial_sigs[k]
+ return psbt
+
+ def sign_message(self, message: Union[str, bytes], bip32_path: str) -> str:
+ """
+ Sign a message (bitcoin message signing).
+
+ Signs a message using the legacy Bitcoin Core signed message format.
+ The message is signed with the key at the given path.
+
+ :param message: The message to be signed. First encoded as bytes if not already.
+ :param bip32_path: The BIP 32 derivation for the key to sign the message with.
+ :return: The signature
+ """
+ # convert message to bytes
+ msg = message
+ if isinstance(message, str):
+ msg = message.encode('utf-8')
+ # check if ascii - we only support ascii characters display
+ try:
+ msg.decode("ascii")
+ fmt = "ascii"
+ except:
+ fmt = "base64"
+ # check if there is \r or \n in the message
+ # in this case we need to encode to base64
+ if b"\r" in msg or b"\n" in msg:
+ fmt = "base64"
+ # convert to base64 if necessary
+ if fmt == "base64":
+ msg = b2a_base64(msg).strip()
+ sig = self.query(f"signmessage {bip32_path} {fmt}:{msg.decode()}")
+ return sig
+
+ def display_singlesig_address(
+ self,
+ bip32_path: str,
+ addr_type: AddressType,
+ ) -> str:
+ """
+ Display and return the single sig address of specified type
+ at the given derivation path.
+
+ :param bip32_path: The BIP 32 derivation path to get the address for
+ :param addr_type: The address type
+ :return: The retrieved address also being shown by the device
+ """
+ if addr_type == AddressType.LEGACY:
+ script_type = "pkh"
+ elif addr_type == AddressType.SH_WIT:
+ script_type = "sh-wpkh"
+ elif addr_type == AddressType.WIT:
+ script_type = "wpkh"
+ else:
+ raise BadArgumentError("Invalid address type")
+ # prepare a request of the form like
+ # `showaddr sh-wsh m/1h/2h/3 descriptor`
+ request = f"showaddr {script_type} {bip32_path}"
+ address = self.query(request)
+ return address
+
+ def display_multisig_address(
+ self,
+ addr_type: AddressType,
+ multisig: MultisigDescriptor,
+ ) -> str:
+ """
+ Display and return the multisig address of specified type given the descriptor.
+
+ :param addr_type: The address type
+ :param multisig: A :class:`~hwilib.descriptor.MultisigDescriptor` that describes the multisig to display.
+ :return: The retrieved address also being shown by the device
+ """
+ # prepare a request of the form like
+ # `showaddr sh-wsh m/1h/2h/3 descriptor`
+ if addr_type == AddressType.LEGACY:
+ script_type = "sh"
+ elif addr_type == AddressType.SH_WIT:
+ script_type = "sh-wsh"
+ elif addr_type == AddressType.WIT:
+ script_type = "wsh"
+ else:
+ raise BadArgumentError("Invalid address type")
+
+ script, *_ = multisig.expand(0)
+ bip32_path = multisig.pubkeys[0].origin.to_string()+multisig.pubkeys[0].deriv_path
+ request = f"showaddr {script_type} {bip32_path} {script.hex()}"
+ address = self.query(request)
+ return address
+
+ def close(self) -> None:
+ # nothing to do for DIY
+ pass
+
+ ############ extra functions Specter supports ############
+
+ def get_random(self, num_bytes: int = 32):
+ if num_bytes < 0 or num_bytes > 10000:
+ raise BadArgumentError("We can only get up to 10k bytes of random data")
+ res = self.query("getrandom %d" % num_bytes)
+ return bytes.fromhex(res)
+
+ def import_wallet(self, name: str, descriptor: str):
+ self.query("addwallet {name} {descriptor}")
+
+
+def enumerate(password=""):
+ """
+ Returns a list of detected Specter devices
+ with their fingerprints and client's paths
+ """
+ results = []
+ # find ports with micropython's VID
+ ports = [
+ port.device
+ for port in serial.tools.list_ports.comports()
+ if is_micropython(port)
+ ]
+ for i in range(10):
+ try:
+ # check if there is a simulator on port 8789
+ # and we can connect to it
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ port = 8789+i
+ s.connect(("127.0.0.1", port))
+ s.close()
+ ports.append("127.0.0.1:%d" % port)
+ except Exception as e:
+ print(e)
+ pass
+
+ for port in ports:
+ # for every port try to get a fingerprint
+ try:
+ path = port
+ data: Dict[str, Any] = {}
+ data['type'] = 'specter'
+ data['model'] = 'specter-diy'
+ data['path'] = path
+ data['needs_pin_sent'] = False
+ data['needs_passphrase_sent'] = False
+ client = SpecterClient(path, "", False)
+ data["fingerprint"] = client.get_master_fingerprint().hex()
+ client.close()
+ results.append(data)
+ except Exception as e:
+ print(e)
+ return results
+
+
+############# Helper functions and base classes ##############
+
+
+def is_micropython(port):
+ return "VID:PID=F055:" in port.hwid.upper()
+
+
+class SpecterBase:
+ """Class with common constants and command encoding"""
+
+ EOL = b"\r\n"
+ ACK = b"ACK"
+ ACK_TIMOUT = 3
+
+ def prepare_cmd(self, data):
+ """
+ Prepends command with 2*EOL and appends EOL at the end.
+ Double EOL in the beginning makes sure all pending data
+ will be cleaned up.
+ """
+ return self.EOL * 2 + data.encode("utf-8") + self.EOL
+
+
+class SpecterUSBDevice(SpecterBase):
+ """
+ Base class for USB device.
+ Implements a simple query command over serial
+ """
+
+ def __init__(self, path):
+ self.ser = serial.Serial(baudrate=115200, timeout=30)
+ self.ser.port = path
+
+ def read_until(self, eol, timeout=None):
+ t0 = time.time()
+ res = b""
+ while not (eol in res):
+ try:
+ raw = self.ser.read(1)
+ res += raw
+ except Exception as e:
+ time.sleep(0.01)
+ if timeout is not None and time.time() > t0 + timeout:
+ self.ser.close()
+ raise DeviceBusyError("Timeout")
+ return res
+
+ def query(self, data, timeout=None):
+ # non blocking
+ self.ser.timeout = 0
+ self.ser.open()
+ self.ser.write(self.prepare_cmd(data))
+ # first we should get ACK
+ res = self.read_until(self.EOL, self.ACK_TIMOUT)[: -len(self.EOL)]
+ # then we should get the data itself
+ if res != self.ACK:
+ self.ser.close()
+ raise DeviceBusyError("Device didn't return ACK")
+ res = self.read_until(self.EOL, timeout)[: -len(self.EOL)]
+ self.ser.close()
+ return res.decode()
+
+
+class SpecterSimulator(SpecterBase):
+ """
+ Base class for the simulator.
+ Implements a simple query command over tcp/ip socket
+ """
+
+ def __init__(self, path):
+ arr = path.split(":")
+ self.sock_settings = (arr[0], int(arr[1]))
+
+ def read_until(self, s, eol, timeout=None):
+ t0 = time.time()
+ res = b""
+ while not (eol in res):
+ try:
+ raw = s.recv(1)
+ res += raw
+ except Exception as e:
+ time.sleep(0.01)
+ if timeout is not None and time.time() > t0 + timeout:
+ s.close()
+ raise DeviceBusyError("Timeout")
+ return res
+
+ def query(self, data, timeout=None):
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.connect(self.sock_settings)
+ s.send(self.prepare_cmd(data))
+ s.setblocking(False)
+ # we will get ACK right away
+ res = self.read_until(s, self.EOL, self.ACK_TIMOUT)[: -len(self.EOL)]
+ if res != self.ACK:
+ raise DeviceBusyError("Device didn't return ACK")
+ # fetch with required timeout
+ res = self.read_until(s, self.EOL, timeout)[: -len(self.EOL)]
+ s.close()
+ return res.decode()
+
+
+###### test for communication ######
+
+if __name__ == "__main__":
+ import sys
+
+ devices = enumerate()
+ if len(devices) == 0:
+ print("No devices found")
+ sys.exit()
+ inp = 0
+ if len(devices) > 1:
+ print("Found %d devices." % len(devices))
+ for i, dev in py_enumerate(devices):
+ print(f"[{i}] {dev['path']} - {dev['fingerprint']}")
+ inp = -1
+ while True:
+ inp = int(input("Enter the device number to use: "))
+ if inp >= len(devices) or inp < 0:
+ print("Meh... Try again.")
+ continue
+ break
+ dev = SpecterClient(devices[inp]["path"])
+ if len(sys.argv) == 1:
+ mfp = dev.get_master_fingerprint().hex()
+ derivation = "m/84h/0h/0h"
+ xpub = dev.get_pubkey_at_path(derivation).to_string()
+ print(f"Device fingerprint: {mfp}")
+ print(f"Segwit xpub: {xpub}")
+ print(f"Full key: [{mfp}{derivation[1:]}]{xpub}")
+ else:
+ if "-i" not in sys.argv:
+ cmd = " ".join(sys.argv[1:])
+ print("Running command:", cmd)
+ print(dev.query(cmd))
+ else:
+ cmd = ""
+ print("Interactive mode! Enter `quit` to exit.")
+ while inp != "quit":
+ cmd = input("Enter command to run: ")
+ if cmd == "quit":
+ sys.exit(0)
+ try:
+ print(dev.query(cmd))
+ except Exception as e:
+ print("Error:", e)
diff --git a/manifests/debug.py b/manifests/debug.py
new file mode 100644
index 0000000..1cf036d
--- /dev/null
+++ b/manifests/debug.py
@@ -0,0 +1,3 @@
+include('../f469-disco/manifests/disco.py')
+freeze('../src')
+freeze('../boot/debug')
\ No newline at end of file
diff --git a/manifests/disco.py b/manifests/disco.py
new file mode 100644
index 0000000..ecfd492
--- /dev/null
+++ b/manifests/disco.py
@@ -0,0 +1,3 @@
+include('../f469-disco/manifests/disco.py')
+freeze('../src')
+freeze('../boot/main')
\ No newline at end of file
diff --git a/manifests/unix.py b/manifests/unix.py
new file mode 100644
index 0000000..97fb98c
--- /dev/null
+++ b/manifests/unix.py
@@ -0,0 +1,2 @@
+include('../f469-disco/manifests/unix.py')
+freeze('../src')
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..e9aaaae
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,20 @@
+site_name: Specter DIY Documentation
+site_url: https://docs.specter.solutions/diy
+repo_url: https://github.com/cryptoadvance/specter-diy/
+nav:
+ - Home:
+ - 'Introduction': README.md
+ - 'FAQ': faq.md
+ - roadmap.md
+ - Hardware:
+ - shopping.md
+ - assembly.md
+ - Software:
+ - quickstart.md
+ - multisig-security-tradeoffs.md
+ - Development:
+ - 'Developing': development.md
+ - communication.md
+ - simulator.md
+theme:
+ name: readthedocs
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..9f37075
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1 @@
+mkdocs==1.3.0
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..83cd59b
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,30 @@
+(import
+ (
+ let
+ lock = builtins.fromJSON (builtins.readFile ./flake.lock);
+ in
+ fetchTarball {
+ url =
+ lock.nodes.flake-compat.locked.url
+ or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
+ sha256 = lock.nodes.flake-compat.locked.narHash;
+ }
+ )
+ {
+ src = ./.;
+ }
+).shellNix
+ url = "https://github.com/NixOS/nixpkgs/archive/nixos-22.05.tar.gz";
+ sha256 = "154x9swf494mqwi4z8nbq2f0sp8pwp4fvx51lqzindjfbb9yxxv5";
+ }) {}
+}:
+ pkgs.mkShell {
+ nativeBuildInputs = [
+ pkgs.buildPackages.gcc-arm-embedded-9
+ pkgs.buildPackages.python39
+ pkgs.openocd
+ pkgs.stlink
+ pkgs.SDL2
+ ];
+ hardeningDisable = ["all"];
+}
diff --git a/shield/01_Structure_Diagram.pdf b/shield/01_Structure_Diagram.pdf
new file mode 100644
index 0000000..377d48f
Binary files /dev/null and b/shield/01_Structure_Diagram.pdf differ
diff --git a/shield/02_Power.pdf b/shield/02_Power.pdf
new file mode 100644
index 0000000..e557516
Binary files /dev/null and b/shield/02_Power.pdf differ
diff --git a/shield/03_Peripherals.pdf b/shield/03_Peripherals.pdf
new file mode 100644
index 0000000..a9092a1
Binary files /dev/null and b/shield/03_Peripherals.pdf differ
diff --git a/shield/3d_case/Specter_Assembly_1.jpg b/shield/3d_case/Specter_Assembly_1.jpg
new file mode 100644
index 0000000..9eca8fc
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_1.jpg differ
diff --git a/shield/3d_case/Specter_Assembly_2.jpg b/shield/3d_case/Specter_Assembly_2.jpg
new file mode 100644
index 0000000..9a23257
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_2.jpg differ
diff --git a/shield/3d_case/Specter_Assembly_3.jpg b/shield/3d_case/Specter_Assembly_3.jpg
new file mode 100644
index 0000000..55f22d9
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_3.jpg differ
diff --git a/shield/3d_case/Specter_Assembly_4.jpg b/shield/3d_case/Specter_Assembly_4.jpg
new file mode 100644
index 0000000..a29f49f
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_4.jpg differ
diff --git a/shield/3d_case/Specter_Assembly_5.jpg b/shield/3d_case/Specter_Assembly_5.jpg
new file mode 100644
index 0000000..cf30052
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_5.jpg differ
diff --git a/shield/3d_case/Specter_Assembly_6.jpg b/shield/3d_case/Specter_Assembly_6.jpg
new file mode 100644
index 0000000..a0cdbc5
Binary files /dev/null and b/shield/3d_case/Specter_Assembly_6.jpg differ
diff --git a/shield/3d_case/Specter_Open_1.jpg b/shield/3d_case/Specter_Open_1.jpg
new file mode 100644
index 0000000..2a20d73
Binary files /dev/null and b/shield/3d_case/Specter_Open_1.jpg differ
diff --git a/shield/3d_case/Specter_Post_1.jpg b/shield/3d_case/Specter_Post_1.jpg
new file mode 100644
index 0000000..9ffc20f
Binary files /dev/null and b/shield/3d_case/Specter_Post_1.jpg differ
diff --git a/shield/3d_case/Specter_Post_2.jpg b/shield/3d_case/Specter_Post_2.jpg
new file mode 100644
index 0000000..0005070
Binary files /dev/null and b/shield/3d_case/Specter_Post_2.jpg differ
diff --git a/shield/3d_case/Specter_Post_3.jpg b/shield/3d_case/Specter_Post_3.jpg
new file mode 100644
index 0000000..1046eec
Binary files /dev/null and b/shield/3d_case/Specter_Post_3.jpg differ
diff --git a/shield/3d_case/Specter_Post_4.jpg b/shield/3d_case/Specter_Post_4.jpg
new file mode 100644
index 0000000..62256cf
Binary files /dev/null and b/shield/3d_case/Specter_Post_4.jpg differ
diff --git a/shield/3d_case/Specter_Post_5.jpg b/shield/3d_case/Specter_Post_5.jpg
new file mode 100644
index 0000000..a07e698
Binary files /dev/null and b/shield/3d_case/Specter_Post_5.jpg differ
diff --git a/shield/3d_case/Specter_Post_6.jpg b/shield/3d_case/Specter_Post_6.jpg
new file mode 100644
index 0000000..bb3d3b0
Binary files /dev/null and b/shield/3d_case/Specter_Post_6.jpg differ
diff --git a/shield/3d_case/Specter_Print_1.jpg b/shield/3d_case/Specter_Print_1.jpg
new file mode 100644
index 0000000..47a9caa
Binary files /dev/null and b/shield/3d_case/Specter_Print_1.jpg differ
diff --git a/shield/3d_case/Specter_Print_2.jpg b/shield/3d_case/Specter_Print_2.jpg
new file mode 100644
index 0000000..9fcaf10
Binary files /dev/null and b/shield/3d_case/Specter_Print_2.jpg differ
diff --git a/shield/3d_case/Specter_Print_3.jpg b/shield/3d_case/Specter_Print_3.jpg
new file mode 100644
index 0000000..9987e5e
Binary files /dev/null and b/shield/3d_case/Specter_Print_3.jpg differ
diff --git a/shield/3d_case/Specter_Print_4.jpg b/shield/3d_case/Specter_Print_4.jpg
new file mode 100644
index 0000000..d873465
Binary files /dev/null and b/shield/3d_case/Specter_Print_4.jpg differ
diff --git a/shield/3d_case/Specter_Print_5.jpg b/shield/3d_case/Specter_Print_5.jpg
new file mode 100644
index 0000000..7b574c0
Binary files /dev/null and b/shield/3d_case/Specter_Print_5.jpg differ
diff --git a/shield/3dprinting.md b/shield/3dprinting.md
new file mode 100644
index 0000000..342913f
--- /dev/null
+++ b/shield/3dprinting.md
@@ -0,0 +1,91 @@
+# Specter DIY Case 3D Printing
+
+
+## 3D Printing
+
+STL and Prusa Gcode files can be downloaded at the following links:
+
+- Grabcad: https://grabcad.com/library/specter-diy-hardware-wallet-case-1
+- Thingiverse: https://www.thingiverse.com/thing:4671552
+
+The Prusa Gcode files include a high temperature and low temperature version, we have had good results in PLA with the low temperature setting.
+
+
+
+
+
+
+
+
+
+
+
+## Post 3D Printing
+
+1. Remove all support material including the ribs on the back case.
+Careful on the inside where the QR code scanner mount is, this is relatively fragile.
+
+
+
+
+
+
+
+2. For smooth button operation remove the thin layer of support material underneath the button. This can be tested without components inside to ensure there is no friction when pressing.
+
+
+
+
+
+3. M3 nuts of 2mm thickness are used to fix components in the back case, these snap into the case but are best glued in.
+
+
+
+## Specter DIY Assembly
+
+Assembly of Specter DIY components and Specter DIY 3D printed case
+
+Required:
+
+- Specter DIY Case
+- Specter Shield
+- STM Discovery Board STM32F469I-DISCO
+- 6x M3x5mm screws low profile head
+- 2x M3 nuts 3mm thick
+- 2x 9mm male/female Spacers (6mm thread)
+- 2x 12mm female/female Spacers
+- 2x M1.4x3mm screws for QR Scanner
+
+
+
+1. Attach the female/female spacers to lower holes in the Specter Shield PCB with two M3 screws.
+
+
+
+2. Place Specter Shield in the back case. Fix in position with the two male/female spacers using the two M3 nuts to increase offset.
+
+
+
+3. Attach STM discovery board and fix in place with 4 M3 screws.
+
+
+
+4. Attach front case beginning on the left (side with the SD card slot).
+
+
+
+5. Then push right side down, carefully moving the button past the display edge. To snap housing closed takes a bit of pressure.
+
+6. When fully closed the display should be flush with the front of the case. Check that all USB ports are correctly aligned and the Smartcard fits.
+
+
+
+
+## Opening the case
+
+To open the case it is best to start above the button on the right side. With finger nail lever front case up. Then repeat on the lower right side.
+
+
+
+Lift the front case away from the display, carefully moving the button past the display edge.
+
diff --git a/shield/3dshield.jpg b/shield/3dshield.jpg
new file mode 100644
index 0000000..b058fa2
Binary files /dev/null and b/shield/3dshield.jpg differ
diff --git a/shield/Alternative_3D_Printed_Case/01_Main_Body.stl b/shield/Alternative_3D_Printed_Case/01_Main_Body.stl
new file mode 100644
index 0000000..522caa2
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/01_Main_Body.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/02_Top_Panel.stl b/shield/Alternative_3D_Printed_Case/02_Top_Panel.stl
new file mode 100644
index 0000000..b104927
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/02_Top_Panel.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/03_Bottom_Panel.stl b/shield/Alternative_3D_Printed_Case/03_Bottom_Panel.stl
new file mode 100644
index 0000000..d63926c
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/03_Bottom_Panel.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/04_Camera_Holder.stl b/shield/Alternative_3D_Printed_Case/04_Camera_Holder.stl
new file mode 100644
index 0000000..9ab8757
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/04_Camera_Holder.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/05_Button.stl b/shield/Alternative_3D_Printed_Case/05_Button.stl
new file mode 100644
index 0000000..6663e94
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/05_Button.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/06_Spacer.stl b/shield/Alternative_3D_Printed_Case/06_Spacer.stl
new file mode 100644
index 0000000..1947626
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/06_Spacer.stl differ
diff --git a/shield/Alternative_3D_Printed_Case/Assembly_Instructions.pdf b/shield/Alternative_3D_Printed_Case/Assembly_Instructions.pdf
new file mode 100644
index 0000000..4c2ba8a
Binary files /dev/null and b/shield/Alternative_3D_Printed_Case/Assembly_Instructions.pdf differ
diff --git a/shield/README.md b/shield/README.md
new file mode 100644
index 0000000..44b2bf7
--- /dev/null
+++ b/shield/README.md
@@ -0,0 +1,18 @@
+# Specter Shield
+
+Specter shield is an extension board for F469-Discovery board by STMicroelectronics. It uses a standard Arduino headers so it might work with other boards with Arduino headers as well.
+
+It includes a QR scanner, smartcard slot and a battery. All elements are not security-critical - QR scanner only captures images and sends scanned data to the main MCU over dead-simple serial interface, smartcard controller learns nothing about the data transmitted to the secure element as communication with it is encrypted.
+
+Structure diagram, pinout and schematics are available in this folder and on [circuitmaker](https://circuitmaker.com/Projects/Details/MikhailTolkachev/specter-shield). To manufacture the kit yourself just send the content of the [`specter-shield`](./specter-shield/) folder to the PCB manufacturer.
+
+For the QR scanner we use GROW GM65-S scanner.
+
+Available in [our shop](https://specter.solutions/shop/specter-shield/). Assembled kit look like this:
+
+
+
+## Print the case for Specter-DIY + Shield:
+
+- Design by @geometrick-design: https://www.thingiverse.com/thing:4671552, [instructions](3dprinting.md)
+- Design by @SeedSigner: https://www.thingiverse.com/thing:4733846, [files and instructions](./Alternative_3D_Printed_Case)
diff --git a/shield/specter-shield/Gerber/Gerber.OutputStatus b/shield/specter-shield/Gerber/Gerber.OutputStatus
new file mode 100644
index 0000000..7296826
--- /dev/null
+++ b/shield/specter-shield/Gerber/Gerber.OutputStatus
@@ -0,0 +1,17 @@
+[OutputStatus]
+OutputFileNames0=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GTL
+OutputFileNames1=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GP1
+OutputFileNames2=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GP2
+OutputFileNames3=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GBL
+OutputFileNames4=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GTO
+OutputFileNames5=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GTP
+OutputFileNames6=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GTS
+OutputFileNames7=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GBS
+OutputFileNames8=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GBP
+OutputFileNames9=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.GBO
+OutputFileNames10=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.Outline
+OutputFileNames11=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.RUL
+OutputFileNames12=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.EXTREP
+OutputFileNames13=C:\ProgramData\Altium\CircuitMaker {8B7EC335-09F7-4C06-BE02-0DA28D6608ED}\Projects\D0458375-9538-47B1-9145-FF061B1E4159\df23c73e-d452-4377-8dea-c4358ea655c1\Outputs\Gerber\specter-shield_v1.REP
+Success=1
+HasRun=1
diff --git a/shield/specter-shield/Gerber/specter-shield_v1-macro.APR_LIB b/shield/specter-shield/Gerber/specter-shield_v1-macro.APR_LIB
new file mode 100644
index 0000000..abc5178
--- /dev/null
+++ b/shield/specter-shield/Gerber/specter-shield_v1-macro.APR_LIB
@@ -0,0 +1,85 @@
+G04:AMPARAMS|DCode=23|XSize=0.3mm|YSize=0.52mm|CornerRadius=0.03mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=180.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD23*
+21,1,0.3000,0.4600,0,0,180.0*
+21,1,0.2400,0.5200,0,0,180.0*
+1,1,0.0600,-0.1200,0.2300*
+1,1,0.0600,0.1200,0.2300*
+1,1,0.0600,0.1200,-0.2300*
+1,1,0.0600,-0.1200,-0.2300*
+%
+G04:AMPARAMS|DCode=27|XSize=2.8mm|YSize=1.8mm|CornerRadius=0.27mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD27*
+21,1,2.8000,1.2600,0,0,270.0*
+21,1,2.2600,1.8000,0,0,270.0*
+1,1,0.5400,-0.6300,-1.1300*
+1,1,0.5400,-0.6300,1.1300*
+1,1,0.5400,0.6300,1.1300*
+1,1,0.5400,0.6300,-1.1300*
+%
+G04:AMPARAMS|DCode=47|XSize=3.1mm|YSize=1.3mm|CornerRadius=0.325mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD47*
+21,1,3.1000,0.6500,0,0,270.0*
+21,1,2.4500,1.3000,0,0,270.0*
+1,1,0.6500,-0.3250,-1.2250*
+1,1,0.6500,-0.3250,1.2250*
+1,1,0.6500,0.3250,1.2250*
+1,1,0.6500,0.3250,-1.2250*
+%
+G04:AMPARAMS|DCode=71|XSize=3mm|YSize=2.3mm|CornerRadius=0mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=180.000|XOffset=0mm|YOffset=0mm|HoleType=Slot|Shape=OvalRelief|Width=0.25mm|Gap=0.25mm|Entries=4|*
+%AMTHOVALD71*
+21,1,0.7000,2.3000,0,0,180.0*
+1,1,2.3000,0.3500,0.0000*
+1,1,2.3000,-0.3500,0.0000*
+21,0,0.7000,1.8000,0,0,180.0*
+1,0,1.8000,0.3500,0.0000*
+1,0,1.8000,-0.3500,0.0000*
+4,0,4,0.2616,0.0884,1.0748,0.9016,1.2516,0.7248,0.4384,-0.0884,0.2616,0.0884,0.0*
+4,0,4,-0.4384,0.0884,-1.2516,-0.7248,-1.0748,-0.9016,-0.2616,-0.0884,-0.4384,0.0884,0.0*
+4,0,4,0.4384,0.0884,1.2516,-0.7248,1.0748,-0.9016,0.2616,-0.0884,0.4384,0.0884,0.0*
+4,0,4,-0.2616,0.0884,-1.0748,0.9016,-1.2516,0.7248,-0.4384,-0.0884,-0.2616,0.0884,0.0*
+%
+G04:AMPARAMS|DCode=79|XSize=2.65mm|YSize=1.1mm|CornerRadius=0.275mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD79*
+21,1,2.6500,0.5500,0,0,0.0*
+21,1,2.1000,1.1000,0,0,0.0*
+1,1,0.5500,1.0500,-0.2750*
+1,1,0.5500,-1.0500,-0.2750*
+1,1,0.5500,-1.0500,0.2750*
+1,1,0.5500,1.0500,0.2750*
+%
+G04:AMPARAMS|DCode=103|XSize=0.2mm|YSize=0.42mm|CornerRadius=0mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=180.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD103*
+21,1,0.2000,0.4200,0,0,180.0*
+21,1,0.2000,0.4200,0,0,180.0*
+1,1,0.0000,-0.1000,0.2100*
+1,1,0.0000,0.1000,0.2100*
+1,1,0.0000,0.1000,-0.2100*
+1,1,0.0000,-0.1000,-0.2100*
+%
+G04:AMPARAMS|DCode=107|XSize=2.9mm|YSize=1.9mm|CornerRadius=0.32mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD107*
+21,1,2.9000,1.2600,0,0,270.0*
+21,1,2.2600,1.9000,0,0,270.0*
+1,1,0.6400,-0.6300,-1.1300*
+1,1,0.6400,-0.6300,1.1300*
+1,1,0.6400,0.6300,1.1300*
+1,1,0.6400,0.6300,-1.1300*
+%
+G04:AMPARAMS|DCode=127|XSize=2.9mm|YSize=1.1mm|CornerRadius=0.225mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD127*
+21,1,2.9000,0.6500,0,0,270.0*
+21,1,2.4500,1.1000,0,0,270.0*
+1,1,0.4500,-0.3250,-1.2250*
+1,1,0.4500,-0.3250,1.2250*
+1,1,0.4500,0.3250,1.2250*
+1,1,0.4500,0.3250,-1.2250*
+%
+G04:AMPARAMS|DCode=139|XSize=2.7mm|YSize=1.15mm|CornerRadius=0.3mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD139*
+21,1,2.7000,0.5500,0,0,0.0*
+21,1,2.1000,1.1500,0,0,0.0*
+1,1,0.6000,1.0500,-0.2750*
+1,1,0.6000,-1.0500,-0.2750*
+1,1,0.6000,-1.0500,0.2750*
+1,1,0.6000,1.0500,0.2750*
+%
diff --git a/shield/specter-shield/Gerber/specter-shield_v1.EXTREP b/shield/specter-shield/Gerber/specter-shield_v1.EXTREP
new file mode 100644
index 0000000..3ca4942
--- /dev/null
+++ b/shield/specter-shield/Gerber/specter-shield_v1.EXTREP
@@ -0,0 +1,20 @@
+------------------------------------------------------------------------------------------
+Gerber File Extension Report For: specter-shield_v1.GBR 12.12.2019 23:16:17
+------------------------------------------------------------------------------------------
+
+
+------------------------------------------------------------------------------------------
+Layer Extension Layer Description
+------------------------------------------------------------------------------------------
+.GTL Top Layer
+.GP1 Power
+.GP2 Ground
+.GBL Bottom Layer
+.GTO Top Overlay
+.GTP Top Paste
+.GTS Top Solder
+.GBS Bottom Solder
+.GBP Bottom Paste
+.GBO Bottom Overlay
+.Outline Outline
+------------------------------------------------------------------------------------------
diff --git a/shield/specter-shield/Gerber/specter-shield_v1.GBL b/shield/specter-shield/Gerber/specter-shield_v1.GBL
new file mode 100644
index 0000000..b8ece89
--- /dev/null
+++ b/shield/specter-shield/Gerber/specter-shield_v1.GBL
@@ -0,0 +1,2037 @@
+G04 Layer_Physical_Order=4*
+G04 Layer_Color=11436288*
+%FSLAX44Y44*%
+%MOMM*%
+G71*
+G01*
+G75*
+%ADD10C,2.0000*%
+%ADD18R,0.5500X0.6000*%
+%ADD19R,0.6200X0.6600*%
+%ADD20R,0.6600X0.6200*%
+%ADD24R,0.6000X0.5500*%
+%ADD26R,0.8500X0.9500*%
+%ADD30R,1.4500X1.2500*%
+%ADD48C,0.2000*%
+%ADD49C,0.3000*%
+%ADD50C,0.5000*%
+%ADD51C,1.0000*%
+%ADD52C,1.5240*%
+%ADD53O,2.2000X1.4000*%
+%ADD54C,1.3970*%
+%ADD55C,1.3000*%
+%ADD56O,0.9000X1.6000*%
+%ADD57C,3.0000*%
+%ADD58C,0.5000*%
+%ADD59C,0.8000*%
+%ADD74O,1.2000X2.2000*%
+%ADD75R,2.4000X2.4000*%
+%ADD76O,0.7000X0.2800*%
+%ADD77O,0.2800X0.7000*%
+%ADD78O,0.3000X1.4000*%
+G04:AMPARAMS|DCode=79|XSize=2.65mm|YSize=1.1mm|CornerRadius=0.275mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|*
+%AMROUNDEDRECTD79*
+21,1,2.6500,0.5500,0,0,0.0*
+21,1,2.1000,1.1000,0,0,0.0*
+1,1,0.5500,1.0500,-0.2750*
+1,1,0.5500,-1.0500,-0.2750*
+1,1,0.5500,-1.0500,0.2750*
+1,1,0.5500,1.0500,0.2750*
+%
+%ADD79ROUNDEDRECTD79*%
+%ADD80R,0.8000X0.3500*%
+G36*
+X4018500Y2982050D02*
+X4030000D01*
+X4032500Y2979550D01*
+Y2973550D01*
+X4030000Y2971050D01*
+X4025500D01*
+Y2966050D01*
+X4006000D01*
+Y2989050D01*
+X4018500D01*
+Y2982050D01*
+D02*
+G37*
+G36*
+X3942000Y2966050D02*
+X3922500D01*
+Y2971050D01*
+X3918000D01*
+X3915500Y2973550D01*
+Y2979550D01*
+X3918000Y2982050D01*
+X3929500D01*
+Y2989050D01*
+X3942000D01*
+Y2966050D01*
+D02*
+G37*
+G36*
+X3838450Y2991950D02*
+X3839450D01*
+Y2990950D01*
+X3842100D01*
+X3854000Y2979050D01*
+Y2907000D01*
+X3881000Y2880000D01*
+X3919000Y2842000D01*
+X3993000D01*
+X4013000Y2862000D01*
+X4015999D01*
+X4016765Y2861412D01*
+X4018712Y2860606D01*
+X4019300Y2860529D01*
+Y2873400D01*
+X4022300D01*
+Y2860529D01*
+X4022888Y2860606D01*
+X4024835Y2861412D01*
+X4025601Y2862000D01*
+X4028875D01*
+X4030875Y2860000D01*
+Y2835224D01*
+X4017651Y2822000D01*
+X4011651Y2816000D01*
+X3906000D01*
+X3896000Y2826000D01*
+X3826750Y2895250D01*
+Y2944705D01*
+X3834450Y2952405D01*
+Y2954200D01*
+X3835450D01*
+Y2959300D01*
+X3836950D01*
+Y2960800D01*
+X3842250D01*
+Y2964200D01*
+Y2967800D01*
+X3836950D01*
+Y2969300D01*
+X3835450D01*
+Y2974400D01*
+X3834450D01*
+Y2991950D01*
+X3835450D01*
+Y2997050D01*
+X3838450D01*
+Y2991950D01*
+D02*
+G37*
+G36*
+X3827927Y2975573D02*
+X3827440Y2974400D01*
+X3822850D01*
+Y2973734D01*
+X3821580Y2973055D01*
+X3821111Y2973368D01*
+X3820820Y2973426D01*
+Y2969600D01*
+Y2965775D01*
+X3821111Y2965832D01*
+X3821580Y2966146D01*
+X3822850Y2965467D01*
+Y2964200D01*
+Y2963734D01*
+X3821580Y2963055D01*
+X3821111Y2963368D01*
+X3820820Y2963426D01*
+Y2959600D01*
+Y2955775D01*
+X3821111Y2955832D01*
+X3821580Y2956146D01*
+X3822850Y2955467D01*
+Y2954200D01*
+X3828541D01*
+X3829027Y2953027D01*
+X3828000Y2952000D01*
+X3816077D01*
+X3812920Y2955157D01*
+X3811950Y2956127D01*
+Y2972270D01*
+X3816680Y2977000D01*
+X3826500D01*
+X3827927Y2975573D01*
+D02*
+G37*
+%LPC*%
+G36*
+X3818280Y2958330D02*
+X3815724D01*
+X3815782Y2958040D01*
+X3816666Y2956716D01*
+X3817989Y2955832D01*
+X3818280Y2955775D01*
+Y2958330D01*
+D02*
+G37*
+G36*
+X3842250Y2957800D02*
+X3838450D01*
+Y2954200D01*
+X3842250D01*
+Y2957800D01*
+D02*
+G37*
+G36*
+X3818280Y2963426D02*
+X3817989Y2963368D01*
+X3816666Y2962484D01*
+X3815782Y2961161D01*
+X3815724Y2960870D01*
+X3818280D01*
+Y2963426D01*
+D02*
+G37*
+G36*
+X3842250Y2974400D02*
+X3838450D01*
+Y2970800D01*
+X3842250D01*
+Y2974400D01*
+D02*
+G37*
+G36*
+X3818280Y2973426D02*
+X3817989Y2973368D01*
+X3816666Y2972484D01*
+X3815782Y2971161D01*
+X3815724Y2970870D01*
+X3818280D01*
+Y2973426D01*
+D02*
+G37*
+G36*
+Y2968330D02*
+X3815724D01*
+X3815782Y2968040D01*
+X3816666Y2966716D01*
+X3817989Y2965832D01*
+X3818280Y2965775D01*
+Y2968330D01*
+D02*
+G37*
+%LPD*%
+D10*
+X4221000Y2218000D02*
+D03*
+X3739000Y2206000D02*
+D03*
+X3778000Y3185000D02*
+D03*
+X4159000Y3032918D02*
+D03*
+Y3102918D02*
+D03*
+D18*
+X3794370Y3001000D02*
+D03*
+Y3009500D02*
+D03*
+X4055657Y2967300D02*
+D03*
+Y2958800D02*
+D03*
+X4180000Y2992000D02*
+D03*
+Y3000500D02*
+D03*
+X4176000Y3176750D02*
+D03*
+Y3185250D02*
+D03*
+D19*
+X3814935Y3081650D02*
+D03*
+Y3090450D02*
+D03*
+X3784285Y3009500D02*
+D03*
+Y3000700D02*
+D03*
+X3826750Y3006535D02*
+D03*
+Y2997735D02*
+D03*
+X3815750Y3006450D02*
+D03*
+Y2997650D02*
+D03*
+X3804370Y3009500D02*
+D03*
+Y3000700D02*
+D03*
+X4067000Y2967300D02*
+D03*
+Y2958500D02*
+D03*
+X4110000Y3046000D02*
+D03*
+Y3037200D02*
+D03*
+X4140000Y2987000D02*
+D03*
+Y2995800D02*
+D03*
+X4191000Y2992000D02*
+D03*
+Y2983200D02*
+D03*
+X4202000Y2992000D02*
+D03*
+Y2983200D02*
+D03*
+D20*
+X3836950Y3006535D02*
+D03*
+X3845750D02*
+D03*
+X3836950Y2997050D02*
+D03*
+X3845750D02*
+D03*
+X3836950Y2969300D02*
+D03*
+X3828150D02*
+D03*
+X3836950Y2959300D02*
+D03*
+X3828150D02*
+D03*
+X4004000Y2946000D02*
+D03*
+X3995200D02*
+D03*
+X4036400D02*
+D03*
+X4027600D02*
+D03*
+X3781650Y3067343D02*
+D03*
+X3790450D02*
+D03*
+D24*
+X3781950Y3057720D02*
+D03*
+X3790450D02*
+D03*
+X3781950Y3048770D02*
+D03*
+X3790450D02*
+D03*
+X3781950Y3039770D02*
+D03*
+X3790450D02*
+D03*
+X3781950Y3030770D02*
+D03*
+X3790450D02*
+D03*
+Y3021220D02*
+D03*
+X3781950D02*
+D03*
+X3984850Y2946000D02*
+D03*
+X3976350D02*
+D03*
+X4055726Y2978000D02*
+D03*
+X4047226D02*
+D03*
+X4153500Y2971000D02*
+D03*
+X4162000D02*
+D03*
+D26*
+X3944995Y2944705D02*
+D03*
+X3958495D02*
+D03*
+D30*
+X3901469Y2961300D02*
+D03*
+Y2977800D02*
+D03*
+D48*
+X3924230Y3032770D02*
+X3941750D01*
+X3949000Y3023885D02*
+Y3024000D01*
+X3946165Y3021050D02*
+X3949000Y3023885D01*
+X3879000Y3033770D02*
+X3888000Y3024770D01*
+Y2942150D02*
+Y3024770D01*
+Y2942150D02*
+X3927000Y2903150D01*
+X3881850Y3020850D02*
+X3883000Y3019700D01*
+Y2938000D02*
+Y3019700D01*
+Y2938000D02*
+X3926000Y2895000D01*
+X3873000Y3018951D02*
+X3878101Y3013850D01*
+X3878150D01*
+Y2930850D02*
+Y3013850D01*
+Y2930850D02*
+X3920000Y2889000D01*
+X3868000Y3017000D02*
+X3872950Y3012050D01*
+Y2924050D02*
+Y3012050D01*
+Y2924050D02*
+X3923600Y2873400D01*
+X3857950Y3020050D02*
+X3867000Y3011000D01*
+Y2918000D02*
+Y3011000D01*
+Y2918000D02*
+X3928000Y2857000D01*
+X3855950Y3016050D02*
+X3861670Y3010330D01*
+Y2909330D02*
+Y3010330D01*
+Y2909330D02*
+X3923000Y2848000D01*
+X4219000Y2899419D02*
+Y3045418D01*
+X4144000Y2824419D02*
+X4219000Y2899419D01*
+X4144000Y2725215D02*
+Y2824419D01*
+X4223940Y2895940D02*
+Y3097061D01*
+X4148658Y2820657D02*
+X4223940Y2895940D01*
+X4148658Y2729343D02*
+Y2820657D01*
+X4232362Y2896048D02*
+Y3002000D01*
+X4154000Y2817686D02*
+X4232362Y2896048D01*
+X4154000Y2730215D02*
+Y2817686D01*
+X3662000Y2159000D02*
+X3681000Y2140000D01*
+X3662000Y2159000D02*
+Y2173000D01*
+X4055657Y2967300D02*
+X4067000D01*
+Y2950250D02*
+Y2958500D01*
+X4055657Y2977931D02*
+X4055726Y2978000D01*
+X4055657Y2967300D02*
+Y2977931D01*
+X4197000Y2269000D02*
+X4209488Y2281488D01*
+Y2286862D01*
+X4209250Y2287101D02*
+X4209488Y2286862D01*
+X4209250Y2287101D02*
+Y2442274D01*
+X4209488Y2442512D01*
+X4200740Y2289717D02*
+Y2326000D01*
+X4217000Y2130000D02*
+X4227000Y2140000D01*
+Y2154000D01*
+X4197000Y2184000D02*
+X4227000Y2154000D01*
+X4221315Y2142840D02*
+Y2153685D01*
+X4192000Y2183000D02*
+X4221315Y2153685D01*
+X4192000Y2183000D02*
+Y2273260D01*
+X4213475Y2135000D02*
+X4221315Y2142840D01*
+X4197000Y2184000D02*
+Y2269000D01*
+X4192000Y2273260D02*
+X4204740Y2286000D01*
+X4133023Y2222000D02*
+X4200740Y2289717D01*
+X3986500Y2965050D02*
+Y2988291D01*
+X4047226Y2978000D02*
+Y2982774D01*
+X4055657Y2941717D02*
+Y2958800D01*
+X3714000Y2506000D02*
+X3980000D01*
+X3698000Y2522000D02*
+X3714000Y2506000D01*
+X3698000Y2522000D02*
+Y2599000D01*
+X3704000Y2605000D01*
+X3892515Y3035515D02*
+X3906980Y3021050D01*
+X3916950Y3025050D02*
+X3942280D01*
+X3908000Y3034000D02*
+X3916950Y3025050D01*
+X3906980Y3021050D02*
+X3946165D01*
+X3923000Y3034000D02*
+X3924230Y3032770D01*
+X3914000Y3043000D02*
+X3923000Y3034000D01*
+X3902000Y3043000D02*
+X3914000D01*
+X3897000Y3067343D02*
+Y3088000D01*
+X3887000Y3064000D02*
+X3904000Y3047000D01*
+X3883000Y3062000D02*
+X3902000Y3043000D01*
+X3873000Y3018951D02*
+Y3041220D01*
+X3868000Y3017000D02*
+Y3035800D01*
+X3905343Y3034000D02*
+X3908000D01*
+X3878150Y3061194D02*
+X3905343Y3034000D01*
+X3874150Y3058650D02*
+X3892515Y3040285D01*
+Y3035515D02*
+Y3040285D01*
+X3858000Y3108000D02*
+X3887000Y3079000D01*
+X3809450Y3108000D02*
+X3858000D01*
+X3795450Y3094000D02*
+X3809450Y3108000D01*
+X3861000Y3113000D02*
+X3891000Y3083000D01*
+X3794000Y3113000D02*
+X3861000D01*
+X3783000Y3102000D02*
+X3794000Y3113000D01*
+X3849000Y3136000D02*
+X3897000Y3088000D01*
+X4167000Y2992000D02*
+X4180000D01*
+X4140000Y2995800D02*
+Y3005000D01*
+Y2987000D02*
+X4140000Y2987000D01*
+X4187000Y3000500D02*
+X4197000Y3010500D01*
+X4180000Y3000500D02*
+X4187000D01*
+X4197000Y3010500D02*
+Y3017000D01*
+X4170000Y3044000D02*
+X4197000Y3017000D01*
+X4184000Y3045418D02*
+X4219000D01*
+X4170000Y3076418D02*
+X4184000Y3090418D01*
+X4170000Y3044000D02*
+Y3076418D01*
+X4180000Y2992000D02*
+X4191000D01*
+X4202000D01*
+Y3001600D01*
+X4176000Y3185250D02*
+X4176070Y3185320D01*
+X4176000Y3136000D02*
+Y3176750D01*
+Y3136000D02*
+X4219000Y3093000D01*
+X4201000Y3120000D02*
+Y3145000D01*
+Y3120000D02*
+X4223940Y3097061D01*
+X4219000Y3045418D02*
+Y3093000D01*
+X3864343Y3096000D02*
+X3883000Y3077343D01*
+X3832900Y3096000D02*
+X3864343D01*
+X3865916Y3088770D02*
+X3878150Y3076537D01*
+X3846000Y3088770D02*
+X3865916D01*
+X3865030Y3084000D02*
+X3874150Y3074880D01*
+X3847230Y3084000D02*
+X3865030D01*
+X3702500Y2636920D02*
+X3708710Y2630710D01*
+X3821950Y3068220D02*
+Y3085050D01*
+X3826985Y3068255D02*
+Y3080755D01*
+X3833280Y3087050D01*
+X3814935Y3074535D02*
+X3816950Y3072520D01*
+X3814935Y3074535D02*
+Y3081650D01*
+X3826950Y3068220D02*
+X3826985Y3068255D01*
+X3816950Y3068220D02*
+Y3072520D01*
+X3970000Y2629400D02*
+Y2728000D01*
+X3790450Y3039770D02*
+X3795450D01*
+X3796400Y3040720D01*
+X3809450D01*
+X3803950Y3035720D02*
+X3809450D01*
+X3799000Y3030770D02*
+X3803950Y3035720D01*
+X3772450Y3030220D02*
+X3774450D01*
+X3775000Y3030770D02*
+X3781950D01*
+X3774450Y3030220D02*
+X3775000Y3030770D01*
+X3790450Y3021220D02*
+Y3028770D01*
+Y3030770D02*
+X3792450D01*
+X3799000D01*
+X3790450Y3028770D02*
+X3792450Y3030770D01*
+X3944600Y2629400D02*
+Y2718600D01*
+X3804950Y3055720D02*
+X3809450D01*
+X3826950Y3016250D02*
+Y3028220D01*
+X3841950Y3022850D02*
+Y3028220D01*
+X3821950Y3023257D02*
+Y3028220D01*
+X3815750Y3017057D02*
+X3821950Y3023257D01*
+X3812920Y3028220D02*
+X3816950D01*
+X3800950Y3045720D02*
+X3809450D01*
+X3797900Y3048770D02*
+X3800950Y3045720D01*
+X3790450Y3048770D02*
+X3797900D01*
+X3802450Y3050720D02*
+X3809450D01*
+X3795450Y3057720D02*
+X3802450Y3050720D01*
+X3790450Y3057720D02*
+X3795450D01*
+X3836950Y3068220D02*
+Y3073720D01*
+X3849450Y3060720D02*
+X3855420D01*
+X3826750Y3006535D02*
+Y3016050D01*
+X3826950Y3016250D01*
+X3841950Y3068220D02*
+X3847920D01*
+X3794370Y3009500D02*
+X3804370D01*
+X3773920Y3021220D02*
+X3781950D01*
+X3772750Y3020050D02*
+X3773920Y3021220D01*
+X3772750Y3018350D02*
+Y3020050D01*
+X3804370Y3019670D02*
+X3812920Y3028220D01*
+X4007000Y2062060D02*
+X4025000Y2080060D01*
+X4176070Y3185320D02*
+X4221000D01*
+X3849450Y3040720D02*
+X3855000D01*
+X3861670Y3034050D01*
+X3970000Y2859000D02*
+Y2873400D01*
+X3836950Y3006535D02*
+Y3015850D01*
+X3841950Y3022850D02*
+X3844750Y3020050D01*
+X3995400Y2861400D02*
+Y2873400D01*
+X3982000Y2848000D02*
+X3995400Y2861400D01*
+X3968000Y2857000D02*
+X3970000Y2859000D01*
+X3772450Y3018050D02*
+X3772750Y3018350D01*
+X3805750Y3021050D02*
+X3812750Y3028050D01*
+X3794670Y3000700D02*
+X3804370D01*
+X3794370Y3001000D02*
+X3794670Y3000700D01*
+X3847920Y3068220D02*
+X3855420Y3075720D01*
+X3815750Y3015000D02*
+Y3017057D01*
+X3836950Y3021507D02*
+Y3028220D01*
+Y3021507D02*
+X3842407Y3016050D01*
+X3831950Y3020850D02*
+Y3028220D01*
+Y3020850D02*
+X3836950Y3015850D01*
+X3815750Y3006450D02*
+Y3015000D01*
+X3784285Y3009500D02*
+X3794370D01*
+X3804370D02*
+Y3019670D01*
+Y2991370D02*
+Y3000700D01*
+X3804000Y2991000D02*
+X3804370Y2991370D01*
+X3926000Y2895000D02*
+X4030000D01*
+X4031850Y2903150D02*
+X4048000Y2887000D01*
+Y2806000D02*
+Y2887000D01*
+X3970000Y2728000D02*
+X4048000Y2806000D01*
+X3927000Y2903150D02*
+X4031850D01*
+X4030000Y2895000D02*
+X4041000Y2884000D01*
+X3944600Y2718600D02*
+X4041000Y2815000D01*
+Y2884000D01*
+X4028000Y2889000D02*
+X4035500Y2881500D01*
+X3923000Y2848000D02*
+X3982000D01*
+X3928000Y2857000D02*
+X3968000D01*
+X3923600Y2873400D02*
+X3944600D01*
+X3920000Y2889000D02*
+X4028000D01*
+X3849450Y3055720D02*
+X3862000D01*
+X3864000Y3057720D01*
+X3844750Y3020050D02*
+X3857950D01*
+X3842407Y3016050D02*
+X3855950D01*
+X3849450Y3045720D02*
+X3858080D01*
+X3849450Y3050720D02*
+X3874000D01*
+X3860750Y3033050D02*
+X3861670Y3033970D01*
+X3831950Y3068220D02*
+Y3074720D01*
+X3855420Y3060720D02*
+X3862750Y3068050D01*
+X3831950Y3074720D02*
+X3846000Y3088770D01*
+X3836950Y3073720D02*
+X3847230Y3084000D01*
+X3809650Y3081650D02*
+X3814935D01*
+X3855420Y3075720D02*
+X3857000D01*
+X3806000Y3078000D02*
+X3809650Y3081650D01*
+X3770000Y3039770D02*
+X3781950D01*
+X3833280Y3087050D02*
+X3833985D01*
+X3821950Y3085050D02*
+X3832900Y3096000D01*
+X3871500Y3042720D02*
+X3873000Y3041220D01*
+X3858080Y3045720D02*
+X3868000Y3035800D01*
+X3881000Y3020850D02*
+X3881850D01*
+X3879000Y3033770D02*
+Y3045720D01*
+X3874000Y3050720D02*
+X3879000Y3045720D01*
+X3887000Y3064000D02*
+Y3079000D01*
+X3874150Y3058650D02*
+Y3074880D01*
+X3878150Y3061194D02*
+Y3076537D01*
+X3883000Y3062000D02*
+Y3077343D01*
+X3891000Y3066345D02*
+Y3083000D01*
+X4036535Y2913000D02*
+X4057000Y2892535D01*
+X3722920Y2529110D02*
+X3971110D01*
+X3720000Y2517000D02*
+X3975000D01*
+X3709000Y2528000D02*
+X3720000Y2517000D01*
+X3709000Y2528000D02*
+Y2580000D01*
+X3724000Y2568000D02*
+X3996000D01*
+X4042000Y2922000D02*
+X4065000Y2899000D01*
+X3971110Y2529110D02*
+X4065000Y2623000D01*
+X3996000Y2568000D02*
+X4057000Y2629000D01*
+X4201000Y3145000D02*
+X4221000Y3165000D01*
+X4004000Y2946000D02*
+X4012850D01*
+X3869400Y2092600D02*
+X3886000Y2076000D01*
+X3902000D01*
+X3893800Y2806400D02*
+X4015900D01*
+X4035500Y2826000D01*
+Y2881500D01*
+X4057000Y2629000D02*
+Y2892535D01*
+X4065000Y2623000D02*
+Y2899000D01*
+X4138000Y2605000D02*
+X4183000D01*
+X4140000Y2987000D02*
+X4153500D01*
+Y2971000D02*
+Y2987000D01*
+X4162000Y2965000D02*
+Y2971000D01*
+X4200740Y2289717D02*
+Y2612574D01*
+X4204740Y2286000D02*
+Y2617260D01*
+X4209488Y2442512D02*
+Y2620512D01*
+X4194000Y2636000D02*
+X4209488Y2620512D01*
+X4184000Y2629315D02*
+X4200740Y2612574D01*
+X4189000Y2633000D02*
+X4204740Y2617260D01*
+X4184000Y2629315D02*
+Y2685215D01*
+X4189000Y2633000D02*
+Y2689000D01*
+X4194000Y2636000D02*
+Y2690215D01*
+X3669000Y2177250D02*
+X3688000Y2158250D01*
+X3669000Y2177250D02*
+Y2949000D01*
+X3671000Y2951000D01*
+X3662000Y2173000D02*
+Y2968000D01*
+X3671000Y2977000D01*
+X3679000Y2260960D02*
+Y2829000D01*
+X3690000Y2706910D02*
+X3698000Y2714910D01*
+X3764000Y3033770D02*
+X3768000Y3037770D01*
+X3764000Y3033770D02*
+X3770000Y3039770D01*
+X3759000Y3038000D02*
+X3765500Y3044500D01*
+X3754000Y3041000D02*
+X3766000Y3053000D01*
+X3754000Y3041000D02*
+X3770720Y3057720D01*
+X3785113Y3127000D02*
+X3820000D01*
+X3782770Y3119000D02*
+X3841000D01*
+X3749000Y3048770D02*
+X3754115Y3053885D01*
+X3759000Y3038000D02*
+X3769770Y3048770D01*
+X3781950D01*
+X3770720Y3057720D02*
+X3781950D01*
+X3743000Y3079230D02*
+X3762885Y3099115D01*
+X3743000Y3079230D02*
+X3782770Y3119000D01*
+X3702500Y2636920D02*
+Y2796000D01*
+X3724000Y2668000D02*
+X3764000Y2708000D01*
+Y3033770D01*
+X3723000Y2681000D02*
+X3759000Y2717000D01*
+Y3038000D01*
+X3723000Y2783000D02*
+X3754000Y2814000D01*
+X3723000Y2802157D02*
+X3749000Y2828157D01*
+X3754000Y2814000D02*
+Y3041000D01*
+X3749000Y2828157D02*
+Y3048770D01*
+X3743000Y2836500D02*
+Y3079230D01*
+X3775000Y3136000D02*
+X3849000D01*
+X3737000Y3078887D02*
+X3743113Y3085000D01*
+X3698000Y2714910D02*
+Y2800000D01*
+X3737000Y3078887D02*
+X3785113Y3127000D01*
+X3727000Y3088000D02*
+X3743000Y3104000D01*
+X3727000Y2895500D02*
+Y3088000D01*
+X3702500Y2796000D02*
+X3743000Y2836500D01*
+X3737000Y2839000D02*
+Y3078887D01*
+X3698000Y2800000D02*
+X3737000Y2839000D01*
+X3691000Y2859500D02*
+X3727000Y2895500D01*
+Y3088000D02*
+X3775000Y3136000D01*
+X3691000Y2829000D02*
+Y2859500D01*
+X3986500Y2988291D02*
+X4001709Y3003500D01*
+X4026500D01*
+X4029500Y3000500D02*
+X4047226Y2982774D01*
+X3769000Y2092600D02*
+X3869400D01*
+X3746000Y2084000D02*
+Y2142750D01*
+X3745000Y2143750D02*
+X3746000Y2142750D01*
+X4154000Y2730215D02*
+X4194000Y2690215D01*
+X4148658Y2729343D02*
+X4189000Y2689000D01*
+X4144000Y2725215D02*
+X4184000Y2685215D01*
+X4137000Y2718315D02*
+X4174315Y2681000D01*
+X4137000Y2718315D02*
+Y2940000D01*
+X4162000Y2965000D01*
+X4132000Y2712000D02*
+X4175000Y2669000D01*
+X3975000Y2517000D02*
+X4072934Y2614934D01*
+Y2905066D01*
+X4045000Y2933000D02*
+X4072934Y2905066D01*
+X3980000Y2506000D02*
+X4081000Y2607000D01*
+Y2916374D01*
+X4055657Y2941717D02*
+X4081000Y2916374D01*
+X4091250Y2428180D02*
+X4192430Y2327000D01*
+X4091250Y2428180D02*
+Y2926000D01*
+X4067000Y2950250D02*
+X4091250Y2926000D01*
+X4099000Y2620685D02*
+X4165685Y2554000D01*
+X4184500Y2544000D02*
+X4191000Y2550500D01*
+X4155560Y2622000D02*
+X4177400D01*
+X4191000Y2608400D01*
+Y2550500D02*
+Y2608400D01*
+X4149000Y2612000D02*
+X4169000D01*
+X4105000Y2638000D02*
+X4138000Y2605000D01*
+X4111000Y2650000D02*
+X4149000Y2612000D01*
+X4121000Y2656560D02*
+X4155560Y2622000D01*
+X4121000Y2656560D02*
+Y2972000D01*
+X4099000Y2620685D02*
+Y2961395D01*
+X4105000Y2638000D02*
+Y2963000D01*
+X4111000Y2650000D02*
+Y2964000D01*
+X4132000Y2712000D02*
+Y2980000D01*
+X3897000Y3067343D02*
+X3906623Y3057720D01*
+X3891000Y3066345D02*
+X3904345Y3053000D01*
+X4098220Y3046000D02*
+X4115750D01*
+X4148750Y3013000D01*
+X4187000D01*
+X4106000Y2057750D02*
+X4183250Y2135000D01*
+X4213475D01*
+X4106992Y2046996D02*
+X4112746D01*
+X4114962Y2049211D01*
+X4186379Y2130000D02*
+X4217000D01*
+X4114962Y2049211D02*
+Y2058582D01*
+X4186379Y2130000D01*
+X3679000Y2260960D02*
+X3698960Y2241000D01*
+X4044407Y2226407D02*
+Y2240000D01*
+X3995000Y2177000D02*
+X4044407Y2226407D01*
+X3698960Y2241000D02*
+X3840000D01*
+X3852000Y2229000D01*
+Y2176465D02*
+Y2229000D01*
+Y2176465D02*
+X3911000Y2117465D01*
+Y2072657D02*
+Y2117465D01*
+X3902000Y2076000D02*
+X3920657Y2057343D01*
+Y2057343D02*
+Y2057343D01*
+Y2057343D02*
+X3937000Y2041000D01*
+X4057404Y2046996D02*
+X4106992D01*
+X4050400Y2054000D02*
+X4057404Y2046996D01*
+X3911000Y2072657D02*
+X3935657Y2048000D01*
+X3937000Y2041000D02*
+X4009625D01*
+X3935657Y2048000D02*
+X3999900D01*
+X4009625Y2041000D02*
+X4022625Y2054000D01*
+X4050400D01*
+X3999900Y2048000D02*
+X4007000Y2055101D01*
+Y2062060D01*
+X3749000Y3048770D02*
+Y3060000D01*
+X3775000Y3086000D01*
+X3785000D01*
+X3790450Y3067343D02*
+X3796550D01*
+X3799670Y3064223D01*
+Y3061000D02*
+Y3064223D01*
+Y3061000D02*
+X3804950Y3055720D01*
+X3790450Y3067343D02*
+Y3075793D01*
+X3795450Y3080793D01*
+Y3094000D01*
+X3781650Y3067343D02*
+X3782000Y3067693D01*
+X3781992Y3067701D02*
+Y3075994D01*
+Y3067701D02*
+X3782000Y3067693D01*
+X4086500Y3057720D02*
+X4098220Y3046000D01*
+X4059000Y3053000D02*
+X4132000Y2980000D01*
+X4046000Y3047000D02*
+X4121000Y2972000D01*
+X4035230Y3039770D02*
+X4111000Y2964000D01*
+X3941750Y3032770D02*
+X3948750Y3039770D01*
+X4032485Y3035515D02*
+X4105000Y2963000D01*
+X3942280Y3025050D02*
+X3952745Y3035515D01*
+X4029395Y3031000D02*
+X4099000Y2961395D01*
+X3949000Y3024000D02*
+X3956000Y3031000D01*
+X3906623Y3057720D02*
+X4086500D01*
+X3904345Y3053000D02*
+X4059000D01*
+X3904000Y3047000D02*
+X4046000D01*
+X3948750Y3039770D02*
+X4035230D01*
+X3952745Y3035515D02*
+X4032485D01*
+X3956000Y3031000D02*
+X4029395D01*
+X3961000Y3023770D02*
+X3961500Y3023270D01*
+Y2965050D02*
+Y3023270D01*
+X3966500Y2957967D02*
+Y2965050D01*
+X3961500Y2956500D02*
+Y2965050D01*
+X3966500Y2957967D02*
+X3970467Y2954000D01*
+X4001500Y2957274D02*
+X4003307Y2955467D01*
+X4001500Y2957274D02*
+Y2965050D01*
+X3991850Y2954000D02*
+X3995200Y2950650D01*
+Y2941051D02*
+X4014250Y2922000D01*
+X4018000D01*
+X3970467Y2954000D02*
+X3991850D01*
+X3995200Y2941051D02*
+Y2946000D01*
+Y2950650D01*
+X4014250Y2922000D02*
+X4042000D01*
+X3984850Y2938150D02*
+Y2946000D01*
+Y2938150D02*
+X4010000Y2913000D01*
+X4036535D01*
+X3972000Y2946000D02*
+X3976350D01*
+X3961500Y2956500D02*
+X3972000Y2946000D01*
+X4036400D02*
+X4045000D01*
+X4022908Y2955467D02*
+X4027600Y2950775D01*
+X4003307Y2955467D02*
+X4022908D01*
+X4027600Y2946000D02*
+Y2950775D01*
+Y2940400D02*
+Y2946000D01*
+Y2940400D02*
+X4035000Y2933000D01*
+X4045000D01*
+X4026500Y3003500D02*
+X4029500Y3000500D01*
+D49*
+X4110000Y3028785D02*
+Y3037200D01*
+X4191000Y2983200D02*
+X4202000D01*
+X3970000Y2077000D02*
+Y2116750D01*
+Y2077000D02*
+X3974000Y2073000D01*
+X3970000Y2077000D02*
+Y2092000D01*
+X3820250Y2959300D02*
+X3828150D01*
+X3845750Y2997050D02*
+X3853750D01*
+X3845750Y3006535D02*
+X3853235D01*
+X3815750Y2989050D02*
+Y2997650D01*
+X3826750Y2990050D02*
+Y2997735D01*
+X3820250Y2969300D02*
+X3828150D01*
+X3784285Y2992285D02*
+Y3000700D01*
+X3784000Y2992000D02*
+X3784285Y2992285D01*
+X3853235Y3006535D02*
+X3853750Y3007050D01*
+X3849450Y3029220D02*
+Y3035720D01*
+Y3029220D02*
+X3850450Y3028220D01*
+X3853750Y2997050D02*
+X3853750Y2997050D01*
+X3964250Y2064000D02*
+Y2127307D01*
+X3835960Y2187960D02*
+Y2223000D01*
+X3805700Y2149750D02*
+Y2157700D01*
+X3835960Y2187960D01*
+X3798219Y2130879D02*
+X3818960Y2151620D01*
+X3764000Y2130879D02*
+X3798219D01*
+X4191000Y2974000D02*
+Y2983200D01*
+X4167000Y2982000D02*
+X4178000D01*
+X3936000Y2985000D02*
+Y2994000D01*
+X4012250Y2985774D02*
+Y2993750D01*
+X4012000Y2994000D02*
+X4012250Y2993750D01*
+X3778000Y2071910D02*
+X3780910Y2069000D01*
+X3898000D01*
+X3970000Y2116750D02*
+X3981250Y2128000D01*
+X3898000Y2069000D02*
+X3923000Y2044000D01*
+X3911000Y2132307D02*
+Y2215000D01*
+Y2132307D02*
+X3918000Y2125307D01*
+Y2079000D02*
+Y2125307D01*
+Y2079000D02*
+X3941000Y2056000D01*
+X3970000D01*
+X3999500Y2085500D01*
+X4009500D01*
+X3695500Y2300000D02*
+X3728500Y2267000D01*
+X3911000Y2215000D02*
+X3972000D01*
+X3859000Y2267000D02*
+X3911000Y2215000D01*
+X3728500Y2267000D02*
+X3813000D01*
+X3813000Y2267000D02*
+X3859000D01*
+X3813000Y2267000D02*
+X3813000Y2267000D01*
+X3953000Y2979550D02*
+X3956500Y2976050D01*
+Y2965050D02*
+Y2976050D01*
+X3958245Y2944250D02*
+X3958495Y2944000D01*
+X3934745Y2944705D02*
+X3944995D01*
+X3958495Y2935124D02*
+X3958745Y2934873D01*
+X3958495Y2935124D02*
+Y2944000D01*
+Y2944705D01*
+X3956500Y2952995D02*
+X3958245Y2951250D01*
+X3956500Y2952995D02*
+Y2962050D01*
+X3958245Y2944250D02*
+Y2951250D01*
+X3944995Y2944705D02*
+Y2950495D01*
+X3951500Y2957000D01*
+Y2965050D01*
+D50*
+X4218000Y2265000D02*
+X4235000Y2282000D01*
+Y2301000D01*
+X3836950Y2997050D02*
+Y3006535D01*
+X3837000Y2947005D02*
+Y2959250D01*
+X3836950Y2959300D02*
+X3837000Y2959250D01*
+X3836950Y2959300D02*
+Y2997050D01*
+X3901469Y2977800D02*
+X3906004Y2982335D01*
+Y2990650D01*
+X3896934Y2982335D02*
+Y2990650D01*
+Y2982335D02*
+X3901469Y2977800D01*
+Y2961300D02*
+X3906004Y2956765D01*
+Y2948450D02*
+Y2956765D01*
+X3896934Y2948450D02*
+Y2956765D01*
+X3901469Y2961300D01*
+X3868400Y2789400D02*
+Y2806400D01*
+X3868000Y2789000D02*
+X3868400Y2789400D01*
+X3806032Y3090450D02*
+X3814935D01*
+X3806000Y3090418D02*
+X3806032Y3090450D01*
+X4020800Y2612000D02*
+Y2629400D01*
+Y2646800D01*
+Y2629400D02*
+X4021200Y2629000D01*
+X4033000D01*
+X4226620Y2748528D02*
+X4231000D01*
+X4235000Y2282000D02*
+Y2606000D01*
+X4201000Y2722908D02*
+X4226620Y2748528D01*
+X4201000Y2640000D02*
+X4235000Y2606000D01*
+X4201000Y2640000D02*
+Y2722908D01*
+X4160547Y2094268D02*
+X4188279Y2122000D01*
+X4222901D01*
+X3986250Y2169750D02*
+Y2171000D01*
+Y2169750D02*
+X4002000Y2154000D01*
+Y2126310D02*
+Y2154000D01*
+X3985250Y2109560D02*
+X4002000Y2126310D01*
+X3986250Y2305750D02*
+X3986500Y2306000D01*
+X3986250Y2169750D02*
+Y2305750D01*
+D51*
+X3837000Y2900000D02*
+X3902000Y2835000D01*
+X3837000Y2900000D02*
+Y2944705D01*
+X3902000Y2835000D02*
+X4007000D01*
+X4020800Y2848800D01*
+Y2873400D01*
+D52*
+X4160500Y2649800D02*
+D03*
+X3716000Y2853000D02*
+D03*
+D53*
+X4221000Y3206148D02*
+D03*
+Y3123852D02*
+D03*
+D54*
+Y3185320D02*
+D03*
+Y3165000D02*
+D03*
+Y3144680D02*
+D03*
+D55*
+X4184000Y3045418D02*
+D03*
+Y3090418D02*
+D03*
+D56*
+X3898000Y2044500D02*
+D03*
+X3832000D02*
+D03*
+D57*
+X3689910Y3258088D02*
+D03*
+X4206089D02*
+D03*
+X3689910Y2071910D02*
+D03*
+X4206089D02*
+D03*
+D58*
+X4101000Y2109000D02*
+D03*
+Y2119000D02*
+D03*
+X4106000Y2114000D02*
+D03*
+X4111000Y2109000D02*
+D03*
+Y2119000D02*
+D03*
+X3834950Y3042720D02*
+D03*
+Y3053720D02*
+D03*
+X3823950Y3042720D02*
+D03*
+Y3053720D02*
+D03*
+X3977250Y2109560D02*
+D03*
+X3985250D02*
+D03*
+D59*
+X4192430Y2327000D02*
+D03*
+X4231225Y2266000D02*
+D03*
+X4218000Y2265000D02*
+D03*
+X4193315Y2146060D02*
+D03*
+X4204315D02*
+D03*
+X4232362Y2130879D02*
+D03*
+X4221966Y2296000D02*
+D03*
+X4216250Y2290000D02*
+D03*
+X4180000Y2315500D02*
+D03*
+X4110000Y3028785D02*
+D03*
+X3704000Y2605000D02*
+D03*
+X3972000Y2215000D02*
+D03*
+X4133023Y2270500D02*
+D03*
+Y2257000D02*
+D03*
+X4102023D02*
+D03*
+Y2270500D02*
+D03*
+X3935000Y3039770D02*
+D03*
+X3908000Y3034000D02*
+D03*
+X3923000D02*
+D03*
+X3892515Y3035515D02*
+D03*
+X3839000Y3121000D02*
+D03*
+X3820000Y3127000D02*
+D03*
+X4140000Y3005000D02*
+D03*
+X4187000Y3013000D02*
+D03*
+X4202000Y3001600D02*
+D03*
+X4205992Y2956994D02*
+D03*
+X4102000Y2137500D02*
+D03*
+X4110000Y2137250D02*
+D03*
+X3723000Y2802157D02*
+D03*
+Y2783000D02*
+D03*
+X3709000Y2580000D02*
+D03*
+X4184500Y2544000D02*
+D03*
+X3688000Y2158250D02*
+D03*
+X3681000Y2140000D02*
+D03*
+X3974000Y2073000D02*
+D03*
+X3762000Y2150060D02*
+D03*
+X3778000Y2115000D02*
+D03*
+X3990000Y2058000D02*
+D03*
+X3796000Y2114000D02*
+D03*
+X3818960Y2137620D02*
+D03*
+X3964500Y2127307D02*
+D03*
+X3948000Y2117560D02*
+D03*
+X3938000Y2117000D02*
+D03*
+X3701000Y2159000D02*
+D03*
+X3691000Y2120000D02*
+D03*
+X4165685Y2554000D02*
+D03*
+X3772450Y3030220D02*
+D03*
+X3819550Y2959600D02*
+D03*
+X4077000Y2136000D02*
+D03*
+X4134000Y2138000D02*
+D03*
+X4035000Y2150250D02*
+D03*
+X4045000D02*
+D03*
+X4056000D02*
+D03*
+X4065000Y2150000D02*
+D03*
+X4035000Y2109750D02*
+D03*
+X4144315Y2145810D02*
+D03*
+X4153315Y2146060D02*
+D03*
+X4164315D02*
+D03*
+X4174315D02*
+D03*
+X4184315Y2145810D02*
+D03*
+X4214315Y2146060D02*
+D03*
+X3813000Y2267000D02*
+D03*
+X3695500Y2300000D02*
+D03*
+X4047000Y2201000D02*
+D03*
+X3679000Y2829000D02*
+D03*
+X4222901Y2113121D02*
+D03*
+X4038000Y2045500D02*
+D03*
+X4025000Y2080060D02*
+D03*
+X4044407Y2240000D02*
+D03*
+X4045000Y2109750D02*
+D03*
+X4056000D02*
+D03*
+X4065000Y2110000D02*
+D03*
+X4059000Y2201000D02*
+D03*
+X4133023Y2222000D02*
+D03*
+X4068500Y2212000D02*
+D03*
+Y2225500D02*
+D03*
+X4232362Y2113121D02*
+D03*
+X4110000Y2090750D02*
+D03*
+X4102000Y2090500D02*
+D03*
+X4009500Y2085500D02*
+D03*
+X4220581Y2340671D02*
+D03*
+X4189581D02*
+D03*
+Y2354171D02*
+D03*
+X4220581Y2402671D02*
+D03*
+Y2389171D02*
+D03*
+X4189581D02*
+D03*
+Y2402671D02*
+D03*
+X4220780Y2440250D02*
+D03*
+Y2426750D02*
+D03*
+X4189780D02*
+D03*
+Y2440250D02*
+D03*
+X4220780Y2488750D02*
+D03*
+Y2475250D02*
+D03*
+X4189780D02*
+D03*
+Y2488750D02*
+D03*
+X3769000Y2092600D02*
+D03*
+X4231000Y2728000D02*
+D03*
+X4232362Y2122000D02*
+D03*
+X4106000Y2057750D02*
+D03*
+X4066434D02*
+D03*
+X4106992Y2046996D02*
+D03*
+X3906004Y2990650D02*
+D03*
+X3896934D02*
+D03*
+X3906004Y2948450D02*
+D03*
+X3896934D02*
+D03*
+X3772450Y3018050D02*
+D03*
+X3815750Y2989050D02*
+D03*
+X3826750Y2990050D02*
+D03*
+Y3016050D02*
+D03*
+X3815750Y3015000D02*
+D03*
+X3819550Y2969600D02*
+D03*
+X3804000Y2991000D02*
+D03*
+X3784000Y2992000D02*
+D03*
+X3868000Y2789000D02*
+D03*
+X3853750Y3007050D02*
+D03*
+X3864000Y3057720D02*
+D03*
+X3850450Y3028220D02*
+D03*
+X3871500Y3042720D02*
+D03*
+X3860750Y3033050D02*
+D03*
+X3853750Y2997050D02*
+D03*
+X3866000Y3069000D02*
+D03*
+X3857000Y3075720D02*
+D03*
+X3806000Y3078000D02*
+D03*
+Y3090418D02*
+D03*
+X3783000Y3102000D02*
+D03*
+X3785000Y3086000D02*
+D03*
+X3690000Y2706910D02*
+D03*
+X3724000Y2668000D02*
+D03*
+X3723000Y2681000D02*
+D03*
+X3708710Y2630710D02*
+D03*
+X3833985Y3087050D02*
+D03*
+X3881000Y3020850D02*
+D03*
+X3724000Y2568000D02*
+D03*
+X3988000Y3023770D02*
+D03*
+X3722920Y2529110D02*
+D03*
+X4020800Y2612000D02*
+D03*
+Y2646800D02*
+D03*
+X4033000Y2629000D02*
+D03*
+X3671000Y2951000D02*
+D03*
+Y2977000D02*
+D03*
+X4220581Y2354171D02*
+D03*
+X4224000Y2733000D02*
+D03*
+X4232362Y3002000D02*
+D03*
+X4207114Y2931974D02*
+D03*
+X4188714Y2923374D02*
+D03*
+X4231000Y2688000D02*
+D03*
+X4221000D02*
+D03*
+Y2679000D02*
+D03*
+X4231000D02*
+D03*
+Y2668810D02*
+D03*
+Y2748528D02*
+D03*
+X4196500Y2771000D02*
+D03*
+X4205000Y2808510D02*
+D03*
+X4215000D02*
+D03*
+X3964250Y2064000D02*
+D03*
+X3964500Y2136000D02*
+D03*
+Y2145000D02*
+D03*
+X3923000Y2044000D02*
+D03*
+X3778000Y2071910D02*
+D03*
+X3835960Y2223000D02*
+D03*
+X3838960Y2137620D02*
+D03*
+X3828960Y2128620D02*
+D03*
+X4012850Y2946000D02*
+D03*
+X3838960Y3147000D02*
+D03*
+X3819930Y3152000D02*
+D03*
+X4222901Y2122000D02*
+D03*
+X3805700Y2149750D02*
+D03*
+X3764000Y2130879D02*
+D03*
+X3818960Y2151620D02*
+D03*
+X4106000Y2083000D02*
+D03*
+X4100000Y2078000D02*
+D03*
+X4112000D02*
+D03*
+X4070000Y2102447D02*
+D03*
+X4060168D02*
+D03*
+X4050000D02*
+D03*
+X4040000D02*
+D03*
+X3931750Y2130000D02*
+D03*
+X3929000Y2117000D02*
+D03*
+X3999000Y2108000D02*
+D03*
+X4047000Y2188000D02*
+D03*
+X4059000Y2187960D02*
+D03*
+X3948000Y2072000D02*
+D03*
+X3938000D02*
+D03*
+X3901000Y2085000D02*
+D03*
+X3896000Y2093000D02*
+D03*
+X3903000Y2109250D02*
+D03*
+X3896000Y2102447D02*
+D03*
+X3838960Y2128000D02*
+D03*
+X3818960Y2128000D02*
+D03*
+X4133023Y2210000D02*
+D03*
+X4102023D02*
+D03*
+Y2222000D02*
+D03*
+X4112000Y2234000D02*
+D03*
+X4123000Y2234093D02*
+D03*
+X4063000Y2240000D02*
+D03*
+X4074000Y2250000D02*
+D03*
+X4112046Y2245907D02*
+D03*
+X4123046Y2246000D02*
+D03*
+X4199964Y2818000D02*
+D03*
+X4210609D02*
+D03*
+X4188714Y2818500D02*
+D03*
+X4186730Y2783174D02*
+D03*
+X4187884Y2774000D02*
+D03*
+X4201000Y2763000D02*
+D03*
+X4210000D02*
+D03*
+X4214315Y2771000D02*
+D03*
+X4205464D02*
+D03*
+X4183000Y2605000D02*
+D03*
+X4169000Y2612000D02*
+D03*
+X4175000Y2669000D02*
+D03*
+X4174315Y2681000D02*
+D03*
+X4191000Y2974000D02*
+D03*
+X4178000Y2982000D02*
+D03*
+X4211000Y2679000D02*
+D03*
+Y2688000D02*
+D03*
+X4165000Y2747000D02*
+D03*
+X4180000D02*
+D03*
+X4172000Y2740000D02*
+D03*
+X4187000D02*
+D03*
+X4194000Y2747000D02*
+D03*
+X4205000D02*
+D03*
+X4214000Y2718000D02*
+D03*
+X3687000Y2814157D02*
+D03*
+X3691000Y2829000D02*
+D03*
+X3708000Y2900000D02*
+D03*
+Y2909000D02*
+D03*
+X3707950Y2891000D02*
+D03*
+X3936000Y2994000D02*
+D03*
+X4012000D02*
+D03*
+X3934000Y2084000D02*
+D03*
+X3798000Y2079000D02*
+D03*
+Y2059000D02*
+D03*
+X3746000Y2084000D02*
+D03*
+X3745000Y2143750D02*
+D03*
+X4199964Y2801000D02*
+D03*
+X4210000D02*
+D03*
+X4087500Y2261000D02*
+D03*
+X4073540Y2240000D02*
+D03*
+X4086270Y2234093D02*
+D03*
+X4077209Y2219116D02*
+D03*
+X4084521Y2208679D02*
+D03*
+X4090668Y2219000D02*
+D03*
+X3964500Y2154000D02*
+D03*
+X3981250Y2128000D02*
+D03*
+X3991000Y2149750D02*
+D03*
+X4172000Y2820000D02*
+D03*
+Y2797000D02*
+D03*
+X4192000Y2808510D02*
+D03*
+X3695500Y2911000D02*
+D03*
+X3684340D02*
+D03*
+Y2888901D02*
+D03*
+X3695500D02*
+D03*
+X4160547Y2094268D02*
+D03*
+X3986500Y2306000D02*
+D03*
+X3689000Y2451000D02*
+D03*
+X3686627Y2335000D02*
+D03*
+X4153500Y2674000D02*
+D03*
+X3924439Y2142907D02*
+D03*
+Y2152000D02*
+D03*
+X3975000Y2163000D02*
+D03*
+X3964500D02*
+D03*
+X3964250Y2172000D02*
+D03*
+X3975000D02*
+D03*
+X3995000Y2177000D02*
+D03*
+X4000000Y2058000D02*
+D03*
+X3974000Y2149750D02*
+D03*
+X3781992Y3075994D02*
+D03*
+X3961000Y3023770D02*
+D03*
+X3953000Y2979550D02*
+D03*
+X3934745Y2944705D02*
+D03*
+X3958745Y2934873D02*
+D03*
+X4045000Y2946000D02*
+D03*
+D74*
+X3995400Y2629400D02*
+D03*
+X4020800D02*
+D03*
+X3970000D02*
+D03*
+X3868400Y2806400D02*
+D03*
+X3944600Y2873400D02*
+D03*
+X3970000D02*
+D03*
+X4020800D02*
+D03*
+X3995400D02*
+D03*
+X3944600Y2629400D02*
+D03*
+X3893800Y2806400D02*
+D03*
+D75*
+X3829450Y3048220D02*
+D03*
+D76*
+X3809450Y3060720D02*
+D03*
+Y3055720D02*
+D03*
+Y3050720D02*
+D03*
+Y3045720D02*
+D03*
+Y3040720D02*
+D03*
+Y3035720D02*
+D03*
+X3849450D02*
+D03*
+Y3040720D02*
+D03*
+Y3045720D02*
+D03*
+Y3050720D02*
+D03*
+Y3055720D02*
+D03*
+Y3060720D02*
+D03*
+D77*
+X3816950Y3028220D02*
+D03*
+X3821950D02*
+D03*
+X3826950D02*
+D03*
+X3831950D02*
+D03*
+X3836950D02*
+D03*
+X3841950D02*
+D03*
+Y3068220D02*
+D03*
+X3836950D02*
+D03*
+X3831950D02*
+D03*
+X3826950D02*
+D03*
+X3821950D02*
+D03*
+X3816950D02*
+D03*
+D78*
+X3951500Y2965050D02*
+D03*
+X3946500D02*
+D03*
+X3956500D02*
+D03*
+X3961500D02*
+D03*
+X3966500D02*
+D03*
+X3971500D02*
+D03*
+X3976500D02*
+D03*
+X4001500D02*
+D03*
+X3996500D02*
+D03*
+X3991500D02*
+D03*
+X3986500D02*
+D03*
+X3981500D02*
+D03*
+D79*
+X3928750Y2976550D02*
+D03*
+X4019250D02*
+D03*
+D80*
+X4153500Y2987000D02*
+D03*
+X4167000Y2982000D02*
+D03*
+Y2992000D02*
+D03*
+M02*
diff --git a/shield/specter-shield/Gerber/specter-shield_v1.GBO b/shield/specter-shield/Gerber/specter-shield_v1.GBO
new file mode 100644
index 0000000..7a935e9
--- /dev/null
+++ b/shield/specter-shield/Gerber/specter-shield_v1.GBO
@@ -0,0 +1,7116 @@
+G04 Layer_Color=13813960*
+%FSLAX44Y44*%
+%MOMM*%
+G71*
+G01*
+G75*
+%ADD48C,0.2000*%
+%ADD60C,0.2540*%
+%ADD81C,0.2500*%
+%ADD85C,0.1500*%
+G36*
+X3940331Y3260000D02*
+X3935914D01*
+X3928528Y3278580D01*
+X3933592D01*
+X3937095Y3269062D01*
+X3937285Y3268491D01*
+X3937475Y3267996D01*
+X3937513Y3267805D01*
+X3937590Y3267653D01*
+X3937628Y3267539D01*
+Y3267501D01*
+X3937666Y3267310D01*
+X3937742Y3267082D01*
+X3937932Y3266549D01*
+X3938008Y3266320D01*
+X3938047Y3266092D01*
+X3938123Y3265940D01*
+Y3265901D01*
+X3939151Y3269062D01*
+X3942654Y3278580D01*
+X3947794D01*
+X3940331Y3260000D01*
+D02*
+G37*
+G36*
+X3925444D02*
+X3920266D01*
+Y3267729D01*
+X3916115Y3271993D01*
+X3908996Y3260000D01*
+X3902294D01*
+X3912498Y3275611D01*
+X3902789Y3285624D01*
+X3909757D01*
+X3920266Y3274240D01*
+Y3285624D01*
+X3925444D01*
+Y3260000D01*
+D02*
+G37*
+G36*
+X3840804Y3284901D02*
+X3841261Y3284101D01*
+X3841794Y3283416D01*
+X3842289Y3282807D01*
+X3842784Y3282312D01*
+X3843165Y3281931D01*
+X3843317Y3281817D01*
+X3843431Y3281703D01*
+X3843507Y3281664D01*
+X3843545Y3281626D01*
+X3844383Y3281017D01*
+X3845144Y3280522D01*
+X3845830Y3280103D01*
+X3846477Y3279799D01*
+X3846972Y3279570D01*
+X3847353Y3279380D01*
+X3847505Y3279342D01*
+X3847619Y3279304D01*
+X3847657Y3279266D01*
+X3847696D01*
+Y3274811D01*
+X3846363Y3275306D01*
+X3845144Y3275877D01*
+X3844078Y3276486D01*
+X3843583Y3276791D01*
+X3843127Y3277096D01*
+X3842746Y3277400D01*
+X3842365Y3277667D01*
+X3842061Y3277895D01*
+X3841832Y3278085D01*
+X3841603Y3278276D01*
+X3841451Y3278390D01*
+X3841375Y3278466D01*
+X3841337Y3278504D01*
+Y3260000D01*
+X3836425D01*
+Y3285739D01*
+X3840423D01*
+X3840804Y3284901D01*
+D02*
+G37*
+G36*
+X3889501Y3282274D02*
+Y3278580D01*
+X3891748D01*
+Y3274659D01*
+X3889501D01*
+Y3266549D01*
+Y3266092D01*
+Y3265635D01*
+Y3265254D01*
+X3889463Y3264911D01*
+Y3264302D01*
+X3889425Y3263846D01*
+X3889387Y3263503D01*
+Y3263275D01*
+X3889349Y3263122D01*
+Y3263084D01*
+X3889273Y3262665D01*
+X3889159Y3262285D01*
+X3889044Y3261942D01*
+X3888930Y3261675D01*
+X3888816Y3261447D01*
+X3888740Y3261295D01*
+X3888702Y3261180D01*
+X3888664Y3261142D01*
+X3888435Y3260914D01*
+X3888207Y3260685D01*
+X3887712Y3260305D01*
+X3887484Y3260190D01*
+X3887293Y3260076D01*
+X3887141Y3260038D01*
+X3887103Y3260000D01*
+X3886684Y3259848D01*
+X3886265Y3259771D01*
+X3885884Y3259695D01*
+X3885504Y3259619D01*
+X3885199D01*
+X3884932Y3259581D01*
+X3884704D01*
+X3883904Y3259619D01*
+X3883181Y3259695D01*
+X3882534Y3259810D01*
+X3881963Y3259962D01*
+X3881468Y3260076D01*
+X3881125Y3260190D01*
+X3880897Y3260266D01*
+X3880820Y3260305D01*
+X3881277Y3264112D01*
+X3881734Y3263960D01*
+X3882115Y3263846D01*
+X3882458Y3263770D01*
+X3882762Y3263731D01*
+X3882953Y3263693D01*
+X3883143Y3263655D01*
+X3883257D01*
+X3883600Y3263693D01*
+X3883866Y3263770D01*
+X3884019Y3263846D01*
+X3884095Y3263884D01*
+X3884285Y3264074D01*
+X3884399Y3264264D01*
+X3884475Y3264417D01*
+X3884514Y3264493D01*
+Y3264569D01*
+X3884552Y3264721D01*
+Y3265064D01*
+Y3265521D01*
+X3884590Y3265978D01*
+Y3266435D01*
+Y3266815D01*
+Y3266930D01*
+Y3267044D01*
+Y3267120D01*
+Y3267158D01*
+Y3274659D01*
+X3881239D01*
+Y3278580D01*
+X3884590D01*
+Y3285167D01*
+X3889501Y3282274D01*
+D02*
+G37*
+G36*
+X4046673D02*
+Y3278580D01*
+X4048920D01*
+Y3274659D01*
+X4046673D01*
+Y3266549D01*
+Y3266092D01*
+Y3265635D01*
+Y3265254D01*
+X4046635Y3264911D01*
+Y3264302D01*
+X4046597Y3263846D01*
+X4046559Y3263503D01*
+Y3263275D01*
+X4046521Y3263122D01*
+Y3263084D01*
+X4046445Y3262665D01*
+X4046331Y3262285D01*
+X4046216Y3261942D01*
+X4046102Y3261675D01*
+X4045988Y3261447D01*
+X4045912Y3261295D01*
+X4045874Y3261180D01*
+X4045836Y3261142D01*
+X4045607Y3260914D01*
+X4045379Y3260685D01*
+X4044884Y3260305D01*
+X4044655Y3260190D01*
+X4044465Y3260076D01*
+X4044313Y3260038D01*
+X4044275Y3260000D01*
+X4043856Y3259848D01*
+X4043437Y3259771D01*
+X4043056Y3259695D01*
+X4042675Y3259619D01*
+X4042371D01*
+X4042104Y3259581D01*
+X4041876D01*
+X4041076Y3259619D01*
+X4040353Y3259695D01*
+X4039706Y3259810D01*
+X4039135Y3259962D01*
+X4038640Y3260076D01*
+X4038297Y3260190D01*
+X4038069Y3260266D01*
+X4037992Y3260305D01*
+X4038449Y3264112D01*
+X4038906Y3263960D01*
+X4039287Y3263846D01*
+X4039630Y3263770D01*
+X4039934Y3263731D01*
+X4040125Y3263693D01*
+X4040315Y3263655D01*
+X4040429D01*
+X4040772Y3263693D01*
+X4041038Y3263770D01*
+X4041190Y3263846D01*
+X4041267Y3263884D01*
+X4041457Y3264074D01*
+X4041571Y3264264D01*
+X4041648Y3264417D01*
+X4041685Y3264493D01*
+Y3264569D01*
+X4041724Y3264721D01*
+Y3265064D01*
+Y3265521D01*
+X4041762Y3265978D01*
+Y3266435D01*
+Y3266815D01*
+Y3266930D01*
+Y3267044D01*
+Y3267120D01*
+Y3267158D01*
+Y3274659D01*
+X4038411D01*
+Y3278580D01*
+X4041762D01*
+Y3285167D01*
+X4046673Y3282274D01*
+D02*
+G37*
+G36*
+X3862773Y3260000D02*
+X3858356D01*
+X3850970Y3278580D01*
+X3856034D01*
+X3859537Y3269062D01*
+X3859727Y3268491D01*
+X3859917Y3267996D01*
+X3859955Y3267805D01*
+X3860032Y3267653D01*
+X3860070Y3267539D01*
+Y3267501D01*
+X3860108Y3267310D01*
+X3860184Y3267082D01*
+X3860374Y3266549D01*
+X3860450Y3266320D01*
+X3860489Y3266092D01*
+X3860565Y3265940D01*
+Y3265901D01*
+X3861593Y3269062D01*
+X3865096Y3278580D01*
+X3870236D01*
+X3862773Y3260000D01*
+D02*
+G37*
+G36*
+X3899667Y3281093D02*
+X3894756D01*
+Y3285624D01*
+X3899667D01*
+Y3281093D01*
+D02*
+G37*
+G36*
+X3927113Y3240932D02*
+X3927761Y3240856D01*
+X3928370Y3240665D01*
+X3928941Y3240475D01*
+X3929474Y3240247D01*
+X3929969Y3239980D01*
+X3930426Y3239713D01*
+X3930845Y3239409D01*
+X3931225Y3239104D01*
+X3931568Y3238838D01*
+X3931835Y3238571D01*
+X3932101Y3238343D01*
+X3932292Y3238152D01*
+X3932406Y3238000D01*
+X3932482Y3237886D01*
+X3932520Y3237848D01*
+Y3240589D01*
+X3937089D01*
+Y3222009D01*
+X3932177D01*
+Y3230385D01*
+Y3230956D01*
+Y3231451D01*
+X3932139Y3231908D01*
+Y3232365D01*
+X3932101Y3232746D01*
+X3932063Y3233089D01*
+X3932025Y3233393D01*
+X3931987Y3233660D01*
+X3931949Y3234078D01*
+X3931873Y3234383D01*
+X3931835Y3234573D01*
+Y3234612D01*
+X3931682Y3235031D01*
+X3931454Y3235411D01*
+X3931225Y3235716D01*
+X3930997Y3235982D01*
+X3930768Y3236211D01*
+X3930578Y3236363D01*
+X3930464Y3236439D01*
+X3930426Y3236477D01*
+X3930045Y3236706D01*
+X3929626Y3236896D01*
+X3929246Y3237010D01*
+X3928903Y3237125D01*
+X3928598Y3237162D01*
+X3928370Y3237201D01*
+X3928141D01*
+X3927761Y3237162D01*
+X3927456Y3237125D01*
+X3927151Y3237048D01*
+X3926885Y3236972D01*
+X3926695Y3236858D01*
+X3926542Y3236782D01*
+X3926466Y3236744D01*
+X3926428Y3236706D01*
+X3926161Y3236515D01*
+X3925971Y3236287D01*
+X3925628Y3235830D01*
+X3925552Y3235640D01*
+X3925476Y3235487D01*
+X3925400Y3235373D01*
+Y3235335D01*
+X3925324Y3235145D01*
+X3925286Y3234916D01*
+X3925210Y3234345D01*
+X3925133Y3233736D01*
+X3925096Y3233051D01*
+X3925057Y3232441D01*
+Y3232175D01*
+Y3231946D01*
+Y3231718D01*
+Y3231566D01*
+Y3231489D01*
+Y3231451D01*
+Y3222009D01*
+X3920146D01*
+Y3233507D01*
+Y3234269D01*
+X3920184Y3234954D01*
+X3920222Y3235525D01*
+X3920298Y3235982D01*
+X3920336Y3236363D01*
+X3920412Y3236591D01*
+X3920450Y3236782D01*
+Y3236820D01*
+X3920565Y3237239D01*
+X3920717Y3237619D01*
+X3920869Y3237962D01*
+X3921021Y3238267D01*
+X3921174Y3238533D01*
+X3921288Y3238723D01*
+X3921364Y3238838D01*
+X3921402Y3238876D01*
+X3921669Y3239219D01*
+X3922011Y3239485D01*
+X3922354Y3239752D01*
+X3922697Y3239980D01*
+X3923001Y3240132D01*
+X3923230Y3240247D01*
+X3923382Y3240323D01*
+X3923458Y3240361D01*
+X3923953Y3240551D01*
+X3924486Y3240703D01*
+X3924981Y3240818D01*
+X3925438Y3240894D01*
+X3925857Y3240932D01*
+X3926161Y3240970D01*
+X3926428D01*
+X3927113Y3240932D01*
+D02*
+G37*
+G36*
+X4027135Y3222009D02*
+X4021653D01*
+X4019558Y3227834D01*
+X4009202D01*
+X4006994Y3222009D01*
+X4001397D01*
+X4011753Y3247633D01*
+X4017198D01*
+X4027135Y3222009D01*
+D02*
+G37*
+G36*
+X3888886Y3240932D02*
+X3889534Y3240856D01*
+X3890143Y3240742D01*
+X3890714Y3240551D01*
+X3891247Y3240361D01*
+X3891742Y3240132D01*
+X3892199Y3239904D01*
+X3892618Y3239676D01*
+X3892998Y3239409D01*
+X3893341Y3239181D01*
+X3893608Y3238952D01*
+X3893874Y3238762D01*
+X3894065Y3238571D01*
+X3894179Y3238457D01*
+X3894255Y3238381D01*
+X3894293Y3238343D01*
+X3894712Y3237848D01*
+X3895092Y3237277D01*
+X3895397Y3236706D01*
+X3895664Y3236096D01*
+X3895892Y3235487D01*
+X3896121Y3234916D01*
+X3896387Y3233736D01*
+X3896501Y3233203D01*
+X3896577Y3232708D01*
+X3896616Y3232251D01*
+X3896654Y3231870D01*
+X3896692Y3231566D01*
+Y3231299D01*
+Y3231147D01*
+Y3231109D01*
+X3896654Y3230423D01*
+X3896616Y3229738D01*
+X3896539Y3229091D01*
+X3896387Y3228481D01*
+X3896273Y3227949D01*
+X3896121Y3227415D01*
+X3895930Y3226920D01*
+X3895778Y3226501D01*
+X3895587Y3226083D01*
+X3895435Y3225740D01*
+X3895283Y3225435D01*
+X3895131Y3225207D01*
+X3895016Y3225017D01*
+X3894940Y3224865D01*
+X3894902Y3224788D01*
+X3894864Y3224750D01*
+X3894407Y3224179D01*
+X3893874Y3223722D01*
+X3893341Y3223304D01*
+X3892770Y3222923D01*
+X3892161Y3222618D01*
+X3891590Y3222351D01*
+X3890981Y3222161D01*
+X3890410Y3221971D01*
+X3889876Y3221856D01*
+X3889343Y3221742D01*
+X3888886Y3221704D01*
+X3888506Y3221628D01*
+X3888163D01*
+X3887935Y3221590D01*
+X3887706D01*
+X3886602Y3221666D01*
+X3885612Y3221819D01*
+X3884774Y3222009D01*
+X3884013Y3222275D01*
+X3883708Y3222390D01*
+X3883442Y3222542D01*
+X3883213Y3222656D01*
+X3882985Y3222732D01*
+X3882833Y3222846D01*
+X3882718Y3222885D01*
+X3882680Y3222961D01*
+X3882642D01*
+X3881919Y3223532D01*
+X3881310Y3224217D01*
+X3880776Y3224865D01*
+X3880358Y3225550D01*
+X3880053Y3226159D01*
+X3879901Y3226387D01*
+X3879825Y3226616D01*
+X3879749Y3226806D01*
+X3879673Y3226959D01*
+X3879634Y3227035D01*
+Y3227073D01*
+X3884546Y3227910D01*
+X3884736Y3227415D01*
+X3884927Y3226996D01*
+X3885117Y3226654D01*
+X3885307Y3226349D01*
+X3885498Y3226121D01*
+X3885650Y3225969D01*
+X3885726Y3225893D01*
+X3885764Y3225854D01*
+X3886069Y3225664D01*
+X3886374Y3225512D01*
+X3886716Y3225398D01*
+X3886983Y3225321D01*
+X3887249Y3225283D01*
+X3887478Y3225245D01*
+X3887668D01*
+X3888277Y3225283D01*
+X3888848Y3225435D01*
+X3889305Y3225626D01*
+X3889724Y3225854D01*
+X3890067Y3226045D01*
+X3890333Y3226235D01*
+X3890486Y3226387D01*
+X3890524Y3226425D01*
+X3890905Y3226920D01*
+X3891171Y3227491D01*
+X3891361Y3228063D01*
+X3891514Y3228596D01*
+X3891590Y3229091D01*
+X3891628Y3229471D01*
+X3891666Y3229624D01*
+Y3229738D01*
+Y3229814D01*
+Y3229852D01*
+X3879368D01*
+Y3230880D01*
+X3879444Y3231832D01*
+X3879558Y3232708D01*
+X3879710Y3233546D01*
+X3879863Y3234307D01*
+X3880053Y3234992D01*
+X3880282Y3235602D01*
+X3880510Y3236172D01*
+X3880739Y3236630D01*
+X3880929Y3237048D01*
+X3881119Y3237429D01*
+X3881310Y3237696D01*
+X3881462Y3237924D01*
+X3881576Y3238114D01*
+X3881652Y3238191D01*
+X3881690Y3238228D01*
+X3882147Y3238723D01*
+X3882642Y3239142D01*
+X3883175Y3239485D01*
+X3883708Y3239828D01*
+X3884241Y3240094D01*
+X3884774Y3240285D01*
+X3885307Y3240475D01*
+X3885840Y3240627D01*
+X3886297Y3240742D01*
+X3886754Y3240818D01*
+X3887173Y3240894D01*
+X3887516Y3240932D01*
+X3887820Y3240970D01*
+X3888201D01*
+X3888886Y3240932D01*
+D02*
+G37*
+G36*
+X4070693D02*
+X4071302Y3240818D01*
+X4071873Y3240703D01*
+X4072368Y3240551D01*
+X4072787Y3240361D01*
+X4073091Y3240247D01*
+X4073282Y3240132D01*
+X4073358Y3240094D01*
+X4073891Y3239752D01*
+X4074386Y3239409D01*
+X4074767Y3239028D01*
+X4075109Y3238647D01*
+X4075414Y3238343D01*
+X4075604Y3238076D01*
+X4075718Y3237924D01*
+X4075757Y3237848D01*
+Y3240589D01*
+X4080326D01*
+Y3214965D01*
+X4075414D01*
+Y3224293D01*
+X4074919Y3223760D01*
+X4074424Y3223341D01*
+X4074005Y3222961D01*
+X4073586Y3222694D01*
+X4073282Y3222466D01*
+X4073053Y3222314D01*
+X4072863Y3222237D01*
+X4072825Y3222199D01*
+X4072330Y3222009D01*
+X4071835Y3221856D01*
+X4071378Y3221742D01*
+X4070959Y3221666D01*
+X4070578Y3221628D01*
+X4070274Y3221590D01*
+X4070007D01*
+X4069436Y3221628D01*
+X4068865Y3221704D01*
+X4068294Y3221819D01*
+X4067799Y3222009D01*
+X4066847Y3222390D01*
+X4066047Y3222885D01*
+X4065705Y3223113D01*
+X4065400Y3223341D01*
+X4065134Y3223532D01*
+X4064944Y3223760D01*
+X4064753Y3223913D01*
+X4064639Y3224027D01*
+X4064563Y3224103D01*
+X4064525Y3224141D01*
+X4064106Y3224636D01*
+X4063763Y3225207D01*
+X4063459Y3225778D01*
+X4063192Y3226349D01*
+X4062964Y3226959D01*
+X4062811Y3227568D01*
+X4062507Y3228748D01*
+X4062430Y3229281D01*
+X4062354Y3229776D01*
+X4062316Y3230233D01*
+X4062278Y3230614D01*
+X4062240Y3230918D01*
+Y3231185D01*
+Y3231337D01*
+Y3231375D01*
+X4062278Y3232213D01*
+X4062354Y3232974D01*
+X4062469Y3233698D01*
+X4062583Y3234383D01*
+X4062773Y3235031D01*
+X4062964Y3235602D01*
+X4063154Y3236135D01*
+X4063382Y3236591D01*
+X4063611Y3237010D01*
+X4063801Y3237391D01*
+X4063991Y3237696D01*
+X4064182Y3237962D01*
+X4064296Y3238152D01*
+X4064410Y3238305D01*
+X4064486Y3238381D01*
+X4064525Y3238419D01*
+X4064944Y3238876D01*
+X4065400Y3239257D01*
+X4065857Y3239599D01*
+X4066314Y3239904D01*
+X4066809Y3240132D01*
+X4067228Y3240361D01*
+X4068104Y3240665D01*
+X4068484Y3240742D01*
+X4068865Y3240818D01*
+X4069170Y3240894D01*
+X4069474Y3240932D01*
+X4069703Y3240970D01*
+X4070007D01*
+X4070693Y3240932D01*
+D02*
+G37*
+G36*
+X3986624Y3238381D02*
+X3987043Y3238838D01*
+X3987500Y3239219D01*
+X3987957Y3239599D01*
+X3988413Y3239866D01*
+X3988870Y3240132D01*
+X3989327Y3240323D01*
+X3990165Y3240665D01*
+X3990546Y3240742D01*
+X3990888Y3240818D01*
+X3991193Y3240894D01*
+X3991459Y3240932D01*
+X3991688Y3240970D01*
+X3991992D01*
+X3992602Y3240932D01*
+X3993211Y3240856D01*
+X3993782Y3240742D01*
+X3994277Y3240589D01*
+X3995267Y3240170D01*
+X3995686Y3239980D01*
+X3996066Y3239752D01*
+X3996409Y3239485D01*
+X3996714Y3239295D01*
+X3996980Y3239066D01*
+X3997209Y3238876D01*
+X3997361Y3238723D01*
+X3997475Y3238609D01*
+X3997551Y3238533D01*
+X3997589Y3238495D01*
+X3997970Y3238000D01*
+X3998313Y3237505D01*
+X3998617Y3236934D01*
+X3998846Y3236363D01*
+X3999074Y3235754D01*
+X3999265Y3235145D01*
+X3999531Y3234002D01*
+X3999608Y3233469D01*
+X3999684Y3232974D01*
+X3999722Y3232517D01*
+X3999760Y3232099D01*
+X3999798Y3231794D01*
+Y3231527D01*
+Y3231375D01*
+Y3231337D01*
+X3999760Y3230500D01*
+X3999684Y3229700D01*
+X3999608Y3228976D01*
+X3999455Y3228253D01*
+X3999265Y3227644D01*
+X3999074Y3227035D01*
+X3998884Y3226501D01*
+X3998655Y3226007D01*
+X3998465Y3225588D01*
+X3998275Y3225207D01*
+X3998084Y3224865D01*
+X3997894Y3224636D01*
+X3997742Y3224407D01*
+X3997666Y3224255D01*
+X3997589Y3224179D01*
+X3997551Y3224141D01*
+X3997094Y3223684D01*
+X3996676Y3223304D01*
+X3996181Y3222961D01*
+X3995724Y3222656D01*
+X3995267Y3222428D01*
+X3994810Y3222199D01*
+X3993934Y3221895D01*
+X3993553Y3221819D01*
+X3993211Y3221742D01*
+X3992868Y3221666D01*
+X3992602Y3221628D01*
+X3992373Y3221590D01*
+X3992068D01*
+X3991497Y3221628D01*
+X3990927Y3221704D01*
+X3990393Y3221819D01*
+X3989937Y3221971D01*
+X3989556Y3222123D01*
+X3989251Y3222237D01*
+X3989061Y3222314D01*
+X3988985Y3222351D01*
+X3988413Y3222656D01*
+X3987918Y3223037D01*
+X3987423Y3223418D01*
+X3987043Y3223836D01*
+X3986738Y3224179D01*
+X3986472Y3224445D01*
+X3986319Y3224636D01*
+X3986281Y3224712D01*
+Y3222009D01*
+X3981712D01*
+Y3247633D01*
+X3986624D01*
+Y3238381D01*
+D02*
+G37*
+G36*
+X4039015Y3240932D02*
+X4039928Y3240780D01*
+X4040766Y3240589D01*
+X4041489Y3240361D01*
+X4042099Y3240132D01*
+X4042327Y3240018D01*
+X4042556Y3239942D01*
+X4042708Y3239866D01*
+X4042822Y3239790D01*
+X4042898Y3239752D01*
+X4042936D01*
+X4043698Y3239257D01*
+X4044383Y3238686D01*
+X4044992Y3238114D01*
+X4045487Y3237543D01*
+X4045868Y3237048D01*
+X4046135Y3236630D01*
+X4046249Y3236477D01*
+X4046287Y3236363D01*
+X4046363Y3236287D01*
+Y3236249D01*
+X4046744Y3235373D01*
+X4047048Y3234536D01*
+X4047239Y3233736D01*
+X4047391Y3233051D01*
+X4047467Y3232403D01*
+X4047505Y3232175D01*
+Y3231946D01*
+X4047543Y3231756D01*
+Y3231642D01*
+Y3231566D01*
+Y3231527D01*
+X4047505Y3230385D01*
+X4047353Y3229319D01*
+X4047162Y3228405D01*
+X4046934Y3227606D01*
+X4046858Y3227263D01*
+X4046744Y3226959D01*
+X4046630Y3226692D01*
+X4046553Y3226501D01*
+X4046477Y3226311D01*
+X4046401Y3226197D01*
+X4046363Y3226121D01*
+Y3226083D01*
+X4045868Y3225321D01*
+X4045297Y3224636D01*
+X4044726Y3224065D01*
+X4044155Y3223570D01*
+X4043660Y3223227D01*
+X4043241Y3222961D01*
+X4043089Y3222846D01*
+X4042974Y3222770D01*
+X4042898Y3222732D01*
+X4042860D01*
+X4041984Y3222351D01*
+X4041109Y3222085D01*
+X4040309Y3221856D01*
+X4039548Y3221742D01*
+X4038900Y3221666D01*
+X4038634Y3221628D01*
+X4038405D01*
+X4038253Y3221590D01*
+X4037986D01*
+X4037225Y3221628D01*
+X4036502Y3221704D01*
+X4035816Y3221856D01*
+X4035169Y3222009D01*
+X4034598Y3222237D01*
+X4034027Y3222466D01*
+X4033494Y3222694D01*
+X4033037Y3222961D01*
+X4032618Y3223227D01*
+X4032237Y3223456D01*
+X4031933Y3223684D01*
+X4031666Y3223913D01*
+X4031438Y3224065D01*
+X4031285Y3224217D01*
+X4031209Y3224293D01*
+X4031171Y3224331D01*
+X4030676Y3224865D01*
+X4030257Y3225435D01*
+X4029915Y3226007D01*
+X4029572Y3226578D01*
+X4029306Y3227187D01*
+X4029115Y3227758D01*
+X4028925Y3228329D01*
+X4028773Y3228862D01*
+X4028658Y3229357D01*
+X4028582Y3229814D01*
+X4028506Y3230233D01*
+X4028468Y3230614D01*
+X4028430Y3230880D01*
+Y3231109D01*
+Y3231261D01*
+Y3231299D01*
+X4028468Y3232061D01*
+X4028544Y3232784D01*
+X4028696Y3233507D01*
+X4028849Y3234155D01*
+X4029039Y3234764D01*
+X4029268Y3235335D01*
+X4029534Y3235868D01*
+X4029763Y3236325D01*
+X4030029Y3236782D01*
+X4030295Y3237125D01*
+X4030524Y3237467D01*
+X4030714Y3237734D01*
+X4030867Y3237962D01*
+X4031019Y3238114D01*
+X4031095Y3238191D01*
+X4031133Y3238228D01*
+X4031666Y3238723D01*
+X4032199Y3239142D01*
+X4032770Y3239485D01*
+X4033341Y3239828D01*
+X4033913Y3240094D01*
+X4034484Y3240285D01*
+X4035055Y3240475D01*
+X4035588Y3240627D01*
+X4036083Y3240742D01*
+X4036540Y3240818D01*
+X4036959Y3240894D01*
+X4037339Y3240932D01*
+X4037606Y3240970D01*
+X4038025D01*
+X4039015Y3240932D01*
+D02*
+G37*
+G36*
+X3811525Y3285700D02*
+X3812172Y3285624D01*
+X3812743Y3285510D01*
+X3813314Y3285320D01*
+X3813847Y3285129D01*
+X3814304Y3284901D01*
+X3814761Y3284672D01*
+X3815142Y3284444D01*
+X3815484Y3284178D01*
+X3815789Y3283949D01*
+X3816056Y3283720D01*
+X3816284Y3283530D01*
+X3816436Y3283340D01*
+X3816550Y3283225D01*
+X3816627Y3283149D01*
+X3816665Y3283111D01*
+X3817122Y3282464D01*
+X3817502Y3281741D01*
+X3817845Y3280979D01*
+X3818112Y3280141D01*
+X3818378Y3279266D01*
+X3818568Y3278390D01*
+X3818873Y3276715D01*
+X3818949Y3275877D01*
+X3819025Y3275154D01*
+X3819101Y3274468D01*
+X3819139Y3273859D01*
+X3819178Y3273364D01*
+Y3272983D01*
+Y3272869D01*
+Y3272755D01*
+Y3272717D01*
+Y3272679D01*
+X3819139Y3271346D01*
+X3819063Y3270128D01*
+X3818949Y3268986D01*
+X3818835Y3267957D01*
+X3818644Y3267044D01*
+X3818454Y3266206D01*
+X3818264Y3265445D01*
+X3818035Y3264797D01*
+X3817807Y3264226D01*
+X3817617Y3263731D01*
+X3817426Y3263312D01*
+X3817236Y3263008D01*
+X3817122Y3262741D01*
+X3817007Y3262589D01*
+X3816931Y3262475D01*
+X3816893Y3262437D01*
+X3816436Y3261942D01*
+X3815979Y3261485D01*
+X3815484Y3261104D01*
+X3814989Y3260800D01*
+X3814494Y3260495D01*
+X3813961Y3260266D01*
+X3813466Y3260076D01*
+X3813010Y3259924D01*
+X3812552Y3259810D01*
+X3812134Y3259734D01*
+X3811791Y3259657D01*
+X3811448Y3259619D01*
+X3811220D01*
+X3810992Y3259581D01*
+X3810839D01*
+X3810154Y3259619D01*
+X3809507Y3259695D01*
+X3808936Y3259810D01*
+X3808364Y3260000D01*
+X3807831Y3260190D01*
+X3807375Y3260419D01*
+X3806918Y3260647D01*
+X3806537Y3260876D01*
+X3806194Y3261104D01*
+X3805890Y3261371D01*
+X3805623Y3261561D01*
+X3805433Y3261751D01*
+X3805280Y3261942D01*
+X3805128Y3262056D01*
+X3805090Y3262132D01*
+X3805052Y3262170D01*
+X3804595Y3262817D01*
+X3804214Y3263541D01*
+X3803871Y3264341D01*
+X3803567Y3265140D01*
+X3803339Y3266016D01*
+X3803110Y3266891D01*
+X3802805Y3268605D01*
+X3802729Y3269404D01*
+X3802653Y3270166D01*
+X3802577Y3270851D01*
+X3802539Y3271460D01*
+X3802501Y3271955D01*
+Y3272336D01*
+Y3272450D01*
+Y3272565D01*
+Y3272603D01*
+Y3272641D01*
+X3802539Y3273973D01*
+X3802615Y3275192D01*
+X3802729Y3276296D01*
+X3802881Y3277324D01*
+X3803072Y3278276D01*
+X3803300Y3279152D01*
+X3803529Y3279913D01*
+X3803757Y3280598D01*
+X3803986Y3281169D01*
+X3804214Y3281703D01*
+X3804443Y3282121D01*
+X3804633Y3282464D01*
+X3804785Y3282730D01*
+X3804900Y3282921D01*
+X3804976Y3283035D01*
+X3805014Y3283073D01*
+X3805433Y3283530D01*
+X3805851Y3283949D01*
+X3806346Y3284292D01*
+X3806803Y3284634D01*
+X3807298Y3284863D01*
+X3807793Y3285091D01*
+X3808250Y3285281D01*
+X3808707Y3285396D01*
+X3809164Y3285510D01*
+X3809545Y3285586D01*
+X3809926Y3285662D01*
+X3810230Y3285700D01*
+X3810497Y3285739D01*
+X3810839D01*
+X3811525Y3285700D01*
+D02*
+G37*
+G36*
+X3798199Y3260000D02*
+X3793287D01*
+Y3264911D01*
+X3798199D01*
+Y3260000D01*
+D02*
+G37*
+G36*
+X3828049D02*
+X3823137D01*
+Y3264911D01*
+X3828049D01*
+Y3260000D01*
+D02*
+G37*
+G36*
+X4099064Y3278923D02*
+X4099673Y3278809D01*
+X4100244Y3278694D01*
+X4100739Y3278542D01*
+X4101158Y3278352D01*
+X4101463Y3278238D01*
+X4101653Y3278123D01*
+X4101729Y3278085D01*
+X4102262Y3277743D01*
+X4102757Y3277400D01*
+X4103138Y3277019D01*
+X4103481Y3276638D01*
+X4103785Y3276334D01*
+X4103976Y3276068D01*
+X4104090Y3275915D01*
+X4104128Y3275839D01*
+Y3278580D01*
+X4108697D01*
+Y3252956D01*
+X4103785D01*
+Y3262285D01*
+X4103290Y3261751D01*
+X4102795Y3261333D01*
+X4102376Y3260952D01*
+X4101958Y3260685D01*
+X4101653Y3260457D01*
+X4101425Y3260305D01*
+X4101234Y3260228D01*
+X4101196Y3260190D01*
+X4100701Y3260000D01*
+X4100206Y3259848D01*
+X4099749Y3259734D01*
+X4099330Y3259657D01*
+X4098950Y3259619D01*
+X4098645Y3259581D01*
+X4098379D01*
+X4097808Y3259619D01*
+X4097236Y3259695D01*
+X4096665Y3259810D01*
+X4096170Y3260000D01*
+X4095219Y3260381D01*
+X4094419Y3260876D01*
+X4094076Y3261104D01*
+X4093772Y3261333D01*
+X4093505Y3261523D01*
+X4093315Y3261751D01*
+X4093124Y3261904D01*
+X4093010Y3262018D01*
+X4092934Y3262094D01*
+X4092896Y3262132D01*
+X4092477Y3262627D01*
+X4092134Y3263198D01*
+X4091830Y3263770D01*
+X4091563Y3264341D01*
+X4091335Y3264950D01*
+X4091183Y3265559D01*
+X4090878Y3266739D01*
+X4090802Y3267272D01*
+X4090726Y3267767D01*
+X4090688Y3268224D01*
+X4090649Y3268605D01*
+X4090611Y3268909D01*
+Y3269176D01*
+Y3269328D01*
+Y3269366D01*
+X4090649Y3270204D01*
+X4090726Y3270966D01*
+X4090840Y3271689D01*
+X4090954Y3272374D01*
+X4091144Y3273022D01*
+X4091335Y3273593D01*
+X4091525Y3274126D01*
+X4091754Y3274583D01*
+X4091982Y3275002D01*
+X4092173Y3275382D01*
+X4092363Y3275687D01*
+X4092553Y3275953D01*
+X4092668Y3276143D01*
+X4092782Y3276296D01*
+X4092858Y3276372D01*
+X4092896Y3276410D01*
+X4093315Y3276867D01*
+X4093772Y3277248D01*
+X4094229Y3277590D01*
+X4094685Y3277895D01*
+X4095180Y3278123D01*
+X4095599Y3278352D01*
+X4096475Y3278657D01*
+X4096855Y3278733D01*
+X4097236Y3278809D01*
+X4097541Y3278885D01*
+X4097845Y3278923D01*
+X4098074Y3278961D01*
+X4098379D01*
+X4099064Y3278923D01*
+D02*
+G37*
+G36*
+X4124536Y3286005D02*
+X4125526Y3285891D01*
+X4126364Y3285739D01*
+X4127125Y3285586D01*
+X4127430Y3285510D01*
+X4127696Y3285434D01*
+X4127963Y3285358D01*
+X4128153Y3285281D01*
+X4128305Y3285205D01*
+X4128419Y3285167D01*
+X4128495Y3285129D01*
+X4128534D01*
+X4129257Y3284786D01*
+X4129904Y3284368D01*
+X4130437Y3283911D01*
+X4130894Y3283492D01*
+X4131237Y3283111D01*
+X4131504Y3282807D01*
+X4131656Y3282616D01*
+X4131694Y3282578D01*
+Y3282540D01*
+X4132075Y3281893D01*
+X4132341Y3281246D01*
+X4132531Y3280636D01*
+X4132646Y3280065D01*
+X4132722Y3279608D01*
+X4132798Y3279228D01*
+Y3279075D01*
+Y3278961D01*
+Y3278923D01*
+Y3278885D01*
+X4132760Y3278314D01*
+X4132684Y3277781D01*
+X4132570Y3277286D01*
+X4132417Y3276791D01*
+X4132075Y3275915D01*
+X4131618Y3275154D01*
+X4131427Y3274849D01*
+X4131199Y3274544D01*
+X4131009Y3274278D01*
+X4130818Y3274088D01*
+X4130704Y3273935D01*
+X4130590Y3273821D01*
+X4130514Y3273745D01*
+X4130475Y3273707D01*
+X4130133Y3273440D01*
+X4129752Y3273174D01*
+X4129333Y3272907D01*
+X4128838Y3272679D01*
+X4127886Y3272260D01*
+X4126935Y3271879D01*
+X4126478Y3271727D01*
+X4126059Y3271613D01*
+X4125678Y3271460D01*
+X4125335Y3271384D01*
+X4125031Y3271308D01*
+X4124840Y3271232D01*
+X4124688Y3271194D01*
+X4124650D01*
+X4124079Y3271042D01*
+X4123546Y3270889D01*
+X4123051Y3270775D01*
+X4122632Y3270661D01*
+X4122251Y3270547D01*
+X4121909Y3270471D01*
+X4121604Y3270394D01*
+X4121376Y3270318D01*
+X4120957Y3270204D01*
+X4120690Y3270128D01*
+X4120538Y3270052D01*
+X4120500D01*
+X4120043Y3269861D01*
+X4119662Y3269671D01*
+X4119320Y3269519D01*
+X4119053Y3269328D01*
+X4118863Y3269176D01*
+X4118748Y3269062D01*
+X4118672Y3268986D01*
+X4118634Y3268947D01*
+X4118444Y3268681D01*
+X4118330Y3268415D01*
+X4118177Y3267920D01*
+X4118139Y3267729D01*
+X4118101Y3267539D01*
+Y3267425D01*
+Y3267386D01*
+X4118139Y3266891D01*
+X4118292Y3266396D01*
+X4118520Y3265978D01*
+X4118748Y3265635D01*
+X4118977Y3265331D01*
+X4119205Y3265102D01*
+X4119358Y3264950D01*
+X4119396Y3264911D01*
+X4119929Y3264569D01*
+X4120500Y3264302D01*
+X4121147Y3264150D01*
+X4121756Y3263998D01*
+X4122289Y3263922D01*
+X4122746Y3263884D01*
+X4123165D01*
+X4124003Y3263922D01*
+X4124764Y3264074D01*
+X4125412Y3264264D01*
+X4125945Y3264493D01*
+X4126364Y3264683D01*
+X4126668Y3264873D01*
+X4126859Y3265026D01*
+X4126935Y3265064D01*
+X4127391Y3265559D01*
+X4127772Y3266130D01*
+X4128115Y3266777D01*
+X4128343Y3267386D01*
+X4128534Y3267920D01*
+X4128648Y3268376D01*
+X4128686Y3268567D01*
+Y3268681D01*
+X4128724Y3268757D01*
+Y3268795D01*
+X4133750Y3268300D01*
+X4133636Y3267501D01*
+X4133483Y3266777D01*
+X4133293Y3266092D01*
+X4133065Y3265445D01*
+X4132798Y3264873D01*
+X4132570Y3264341D01*
+X4132303Y3263846D01*
+X4132037Y3263427D01*
+X4131770Y3263008D01*
+X4131504Y3262703D01*
+X4131275Y3262399D01*
+X4131085Y3262170D01*
+X4130894Y3261980D01*
+X4130780Y3261866D01*
+X4130704Y3261790D01*
+X4130666Y3261751D01*
+X4130133Y3261371D01*
+X4129600Y3261028D01*
+X4128990Y3260723D01*
+X4128381Y3260457D01*
+X4127772Y3260228D01*
+X4127163Y3260038D01*
+X4125945Y3259771D01*
+X4125374Y3259695D01*
+X4124879Y3259619D01*
+X4124422Y3259581D01*
+X4124003Y3259543D01*
+X4123660Y3259505D01*
+X4123203D01*
+X4121985Y3259543D01*
+X4120919Y3259657D01*
+X4119967Y3259810D01*
+X4119548Y3259886D01*
+X4119167Y3259962D01*
+X4118825Y3260038D01*
+X4118520Y3260114D01*
+X4118253Y3260190D01*
+X4118025Y3260266D01*
+X4117873Y3260343D01*
+X4117758Y3260381D01*
+X4117682Y3260419D01*
+X4117644D01*
+X4116845Y3260800D01*
+X4116159Y3261256D01*
+X4115550Y3261751D01*
+X4115055Y3262208D01*
+X4114674Y3262627D01*
+X4114408Y3262970D01*
+X4114218Y3263198D01*
+X4114180Y3263236D01*
+Y3263275D01*
+X4113761Y3263998D01*
+X4113456Y3264759D01*
+X4113228Y3265445D01*
+X4113075Y3266092D01*
+X4112999Y3266625D01*
+X4112923Y3267044D01*
+Y3267196D01*
+Y3267310D01*
+Y3267386D01*
+Y3267425D01*
+X4112961Y3268300D01*
+X4113075Y3269100D01*
+X4113266Y3269785D01*
+X4113418Y3270394D01*
+X4113608Y3270851D01*
+X4113799Y3271194D01*
+X4113913Y3271422D01*
+X4113951Y3271498D01*
+X4114370Y3272108D01*
+X4114827Y3272603D01*
+X4115322Y3273060D01*
+X4115779Y3273440D01*
+X4116159Y3273745D01*
+X4116502Y3273935D01*
+X4116731Y3274088D01*
+X4116769Y3274126D01*
+X4116807D01*
+X4117149Y3274316D01*
+X4117568Y3274468D01*
+X4118444Y3274811D01*
+X4119358Y3275116D01*
+X4120272Y3275382D01*
+X4121071Y3275611D01*
+X4121452Y3275725D01*
+X4121756Y3275801D01*
+X4122023Y3275877D01*
+X4122213Y3275915D01*
+X4122328Y3275953D01*
+X4122366D01*
+X4123051Y3276143D01*
+X4123660Y3276296D01*
+X4124193Y3276448D01*
+X4124688Y3276601D01*
+X4125145Y3276753D01*
+X4125526Y3276905D01*
+X4125869Y3277057D01*
+X4126135Y3277172D01*
+X4126401Y3277286D01*
+X4126592Y3277400D01*
+X4126744Y3277476D01*
+X4126896Y3277552D01*
+X4127049Y3277667D01*
+X4127087Y3277705D01*
+X4127354Y3277971D01*
+X4127544Y3278199D01*
+X4127658Y3278466D01*
+X4127734Y3278694D01*
+X4127810Y3278923D01*
+X4127849Y3279075D01*
+Y3279189D01*
+Y3279228D01*
+X4127810Y3279608D01*
+X4127734Y3279913D01*
+X4127582Y3280179D01*
+X4127430Y3280408D01*
+X4127315Y3280598D01*
+X4127163Y3280713D01*
+X4127087Y3280789D01*
+X4127049Y3280827D01*
+X4126554Y3281131D01*
+X4125983Y3281360D01*
+X4125374Y3281550D01*
+X4124840Y3281664D01*
+X4124307Y3281741D01*
+X4123927Y3281779D01*
+X4123546D01*
+X4122784Y3281741D01*
+X4122099Y3281626D01*
+X4121528Y3281512D01*
+X4121071Y3281360D01*
+X4120728Y3281169D01*
+X4120462Y3281055D01*
+X4120309Y3280941D01*
+X4120272Y3280903D01*
+X4119891Y3280522D01*
+X4119586Y3280103D01*
+X4119320Y3279647D01*
+X4119129Y3279152D01*
+X4118977Y3278733D01*
+X4118901Y3278390D01*
+X4118825Y3278162D01*
+Y3278123D01*
+Y3278085D01*
+X4113647Y3278276D01*
+X4113685Y3278923D01*
+X4113799Y3279532D01*
+X4113951Y3280103D01*
+X4114103Y3280636D01*
+X4114332Y3281131D01*
+X4114522Y3281588D01*
+X4114751Y3282007D01*
+X4114979Y3282426D01*
+X4115246Y3282769D01*
+X4115474Y3283035D01*
+X4115664Y3283302D01*
+X4115855Y3283530D01*
+X4116007Y3283682D01*
+X4116122Y3283797D01*
+X4116198Y3283873D01*
+X4116236Y3283911D01*
+X4116731Y3284292D01*
+X4117263Y3284634D01*
+X4117797Y3284901D01*
+X4118406Y3285129D01*
+X4119586Y3285510D01*
+X4120767Y3285776D01*
+X4121299Y3285853D01*
+X4121833Y3285929D01*
+X4122289Y3285967D01*
+X4122670Y3286005D01*
+X4123013Y3286043D01*
+X4123470D01*
+X4124536Y3286005D01*
+D02*
+G37*
+G36*
+X3781674Y3285700D02*
+X3782321Y3285624D01*
+X3782892Y3285510D01*
+X3783464Y3285320D01*
+X3783997Y3285129D01*
+X3784453Y3284901D01*
+X3784910Y3284672D01*
+X3785291Y3284444D01*
+X3785634Y3284178D01*
+X3785938Y3283949D01*
+X3786205Y3283720D01*
+X3786433Y3283530D01*
+X3786586Y3283340D01*
+X3786700Y3283225D01*
+X3786776Y3283149D01*
+X3786814Y3283111D01*
+X3787271Y3282464D01*
+X3787652Y3281741D01*
+X3787994Y3280979D01*
+X3788261Y3280141D01*
+X3788528Y3279266D01*
+X3788718Y3278390D01*
+X3789023Y3276715D01*
+X3789099Y3275877D01*
+X3789175Y3275154D01*
+X3789251Y3274468D01*
+X3789289Y3273859D01*
+X3789327Y3273364D01*
+Y3272983D01*
+Y3272869D01*
+Y3272755D01*
+Y3272717D01*
+Y3272679D01*
+X3789289Y3271346D01*
+X3789213Y3270128D01*
+X3789099Y3268986D01*
+X3788984Y3267957D01*
+X3788794Y3267044D01*
+X3788604Y3266206D01*
+X3788413Y3265445D01*
+X3788185Y3264797D01*
+X3787957Y3264226D01*
+X3787766Y3263731D01*
+X3787576Y3263312D01*
+X3787385Y3263008D01*
+X3787271Y3262741D01*
+X3787157Y3262589D01*
+X3787081Y3262475D01*
+X3787043Y3262437D01*
+X3786586Y3261942D01*
+X3786129Y3261485D01*
+X3785634Y3261104D01*
+X3785139Y3260800D01*
+X3784644Y3260495D01*
+X3784111Y3260266D01*
+X3783616Y3260076D01*
+X3783159Y3259924D01*
+X3782702Y3259810D01*
+X3782283Y3259734D01*
+X3781941Y3259657D01*
+X3781598Y3259619D01*
+X3781370D01*
+X3781141Y3259581D01*
+X3780989D01*
+X3780303Y3259619D01*
+X3779656Y3259695D01*
+X3779085Y3259810D01*
+X3778514Y3260000D01*
+X3777981Y3260190D01*
+X3777524Y3260419D01*
+X3777067Y3260647D01*
+X3776686Y3260876D01*
+X3776344Y3261104D01*
+X3776039Y3261371D01*
+X3775772Y3261561D01*
+X3775582Y3261751D01*
+X3775430Y3261942D01*
+X3775278Y3262056D01*
+X3775240Y3262132D01*
+X3775201Y3262170D01*
+X3774745Y3262817D01*
+X3774364Y3263541D01*
+X3774021Y3264341D01*
+X3773716Y3265140D01*
+X3773488Y3266016D01*
+X3773260Y3266891D01*
+X3772955Y3268605D01*
+X3772879Y3269404D01*
+X3772803Y3270166D01*
+X3772727Y3270851D01*
+X3772689Y3271460D01*
+X3772650Y3271955D01*
+Y3272336D01*
+Y3272450D01*
+Y3272565D01*
+Y3272603D01*
+Y3272641D01*
+X3772689Y3273973D01*
+X3772765Y3275192D01*
+X3772879Y3276296D01*
+X3773031Y3277324D01*
+X3773221Y3278276D01*
+X3773450Y3279152D01*
+X3773678Y3279913D01*
+X3773907Y3280598D01*
+X3774135Y3281169D01*
+X3774364Y3281703D01*
+X3774592Y3282121D01*
+X3774783Y3282464D01*
+X3774935Y3282730D01*
+X3775049Y3282921D01*
+X3775125Y3283035D01*
+X3775163Y3283073D01*
+X3775582Y3283530D01*
+X3776001Y3283949D01*
+X3776496Y3284292D01*
+X3776953Y3284634D01*
+X3777448Y3284863D01*
+X3777943Y3285091D01*
+X3778400Y3285281D01*
+X3778857Y3285396D01*
+X3779313Y3285510D01*
+X3779694Y3285586D01*
+X3780075Y3285662D01*
+X3780380Y3285700D01*
+X3780646Y3285739D01*
+X3780989D01*
+X3781674Y3285700D01*
+D02*
+G37*
+G36*
+X3899667Y3260000D02*
+X3894756D01*
+Y3278580D01*
+X3899667D01*
+Y3260000D01*
+D02*
+G37*
+G36*
+X4028588Y3278923D02*
+X4029235Y3278847D01*
+X4029844Y3278733D01*
+X4030416Y3278542D01*
+X4030948Y3278352D01*
+X4031443Y3278123D01*
+X4031900Y3277895D01*
+X4032319Y3277667D01*
+X4032700Y3277400D01*
+X4033043Y3277172D01*
+X4033309Y3276943D01*
+X4033576Y3276753D01*
+X4033766Y3276562D01*
+X4033880Y3276448D01*
+X4033956Y3276372D01*
+X4033994Y3276334D01*
+X4034413Y3275839D01*
+X4034794Y3275268D01*
+X4035099Y3274697D01*
+X4035365Y3274088D01*
+X4035594Y3273478D01*
+X4035822Y3272907D01*
+X4036089Y3271727D01*
+X4036203Y3271194D01*
+X4036279Y3270699D01*
+X4036317Y3270242D01*
+X4036355Y3269861D01*
+X4036393Y3269557D01*
+Y3269290D01*
+Y3269138D01*
+Y3269100D01*
+X4036355Y3268415D01*
+X4036317Y3267729D01*
+X4036241Y3267082D01*
+X4036089Y3266473D01*
+X4035974Y3265940D01*
+X4035822Y3265406D01*
+X4035632Y3264911D01*
+X4035479Y3264493D01*
+X4035289Y3264074D01*
+X4035137Y3263731D01*
+X4034984Y3263427D01*
+X4034832Y3263198D01*
+X4034718Y3263008D01*
+X4034642Y3262856D01*
+X4034604Y3262780D01*
+X4034566Y3262741D01*
+X4034109Y3262170D01*
+X4033576Y3261713D01*
+X4033043Y3261295D01*
+X4032472Y3260914D01*
+X4031862Y3260609D01*
+X4031291Y3260343D01*
+X4030682Y3260152D01*
+X4030111Y3259962D01*
+X4029578Y3259848D01*
+X4029045Y3259734D01*
+X4028588Y3259695D01*
+X4028207Y3259619D01*
+X4027864D01*
+X4027636Y3259581D01*
+X4027408D01*
+X4026303Y3259657D01*
+X4025313Y3259810D01*
+X4024476Y3260000D01*
+X4023714Y3260266D01*
+X4023410Y3260381D01*
+X4023143Y3260533D01*
+X4022915Y3260647D01*
+X4022686Y3260723D01*
+X4022534Y3260838D01*
+X4022420Y3260876D01*
+X4022382Y3260952D01*
+X4022344D01*
+X4021620Y3261523D01*
+X4021011Y3262208D01*
+X4020478Y3262856D01*
+X4020059Y3263541D01*
+X4019755Y3264150D01*
+X4019602Y3264379D01*
+X4019526Y3264607D01*
+X4019450Y3264797D01*
+X4019374Y3264950D01*
+X4019336Y3265026D01*
+Y3265064D01*
+X4024247Y3265901D01*
+X4024438Y3265406D01*
+X4024628Y3264988D01*
+X4024818Y3264645D01*
+X4025009Y3264341D01*
+X4025199Y3264112D01*
+X4025352Y3263960D01*
+X4025428Y3263884D01*
+X4025466Y3263846D01*
+X4025770Y3263655D01*
+X4026075Y3263503D01*
+X4026418Y3263389D01*
+X4026684Y3263312D01*
+X4026951Y3263275D01*
+X4027179Y3263236D01*
+X4027369D01*
+X4027979Y3263275D01*
+X4028550Y3263427D01*
+X4029007Y3263617D01*
+X4029425Y3263846D01*
+X4029768Y3264036D01*
+X4030035Y3264226D01*
+X4030187Y3264379D01*
+X4030225Y3264417D01*
+X4030606Y3264911D01*
+X4030872Y3265483D01*
+X4031063Y3266054D01*
+X4031215Y3266587D01*
+X4031291Y3267082D01*
+X4031329Y3267462D01*
+X4031367Y3267615D01*
+Y3267729D01*
+Y3267805D01*
+Y3267843D01*
+X4019069D01*
+Y3268871D01*
+X4019146Y3269823D01*
+X4019260Y3270699D01*
+X4019412Y3271537D01*
+X4019564Y3272298D01*
+X4019755Y3272983D01*
+X4019983Y3273593D01*
+X4020211Y3274164D01*
+X4020440Y3274621D01*
+X4020630Y3275039D01*
+X4020821Y3275420D01*
+X4021011Y3275687D01*
+X4021163Y3275915D01*
+X4021277Y3276106D01*
+X4021354Y3276182D01*
+X4021392Y3276220D01*
+X4021849Y3276715D01*
+X4022344Y3277133D01*
+X4022877Y3277476D01*
+X4023410Y3277819D01*
+X4023943Y3278085D01*
+X4024476Y3278276D01*
+X4025009Y3278466D01*
+X4025542Y3278618D01*
+X4025999Y3278733D01*
+X4026456Y3278809D01*
+X4026874Y3278885D01*
+X4027217Y3278923D01*
+X4027522Y3278961D01*
+X4027903D01*
+X4028588Y3278923D01*
+D02*
+G37*
+G36*
+X4080331D02*
+X4080978Y3278847D01*
+X4081588Y3278733D01*
+X4082159Y3278542D01*
+X4082692Y3278352D01*
+X4083187Y3278123D01*
+X4083644Y3277895D01*
+X4084062Y3277667D01*
+X4084443Y3277400D01*
+X4084786Y3277172D01*
+X4085052Y3276943D01*
+X4085319Y3276753D01*
+X4085509Y3276562D01*
+X4085623Y3276448D01*
+X4085700Y3276372D01*
+X4085738Y3276334D01*
+X4086157Y3275839D01*
+X4086537Y3275268D01*
+X4086842Y3274697D01*
+X4087108Y3274088D01*
+X4087337Y3273478D01*
+X4087565Y3272907D01*
+X4087832Y3271727D01*
+X4087946Y3271194D01*
+X4088022Y3270699D01*
+X4088060Y3270242D01*
+X4088098Y3269861D01*
+X4088137Y3269557D01*
+Y3269290D01*
+Y3269138D01*
+Y3269100D01*
+X4088098Y3268415D01*
+X4088060Y3267729D01*
+X4087984Y3267082D01*
+X4087832Y3266473D01*
+X4087718Y3265940D01*
+X4087565Y3265406D01*
+X4087375Y3264911D01*
+X4087223Y3264493D01*
+X4087032Y3264074D01*
+X4086880Y3263731D01*
+X4086728Y3263427D01*
+X4086576Y3263198D01*
+X4086461Y3263008D01*
+X4086385Y3262856D01*
+X4086347Y3262780D01*
+X4086309Y3262741D01*
+X4085852Y3262170D01*
+X4085319Y3261713D01*
+X4084786Y3261295D01*
+X4084215Y3260914D01*
+X4083606Y3260609D01*
+X4083035Y3260343D01*
+X4082426Y3260152D01*
+X4081854Y3259962D01*
+X4081321Y3259848D01*
+X4080788Y3259734D01*
+X4080331Y3259695D01*
+X4079951Y3259619D01*
+X4079608D01*
+X4079379Y3259581D01*
+X4079151D01*
+X4078047Y3259657D01*
+X4077057Y3259810D01*
+X4076219Y3260000D01*
+X4075458Y3260266D01*
+X4075153Y3260381D01*
+X4074886Y3260533D01*
+X4074658Y3260647D01*
+X4074430Y3260723D01*
+X4074277Y3260838D01*
+X4074163Y3260876D01*
+X4074125Y3260952D01*
+X4074087D01*
+X4073364Y3261523D01*
+X4072755Y3262208D01*
+X4072221Y3262856D01*
+X4071802Y3263541D01*
+X4071498Y3264150D01*
+X4071346Y3264379D01*
+X4071270Y3264607D01*
+X4071194Y3264797D01*
+X4071117Y3264950D01*
+X4071079Y3265026D01*
+Y3265064D01*
+X4075991Y3265901D01*
+X4076181Y3265406D01*
+X4076371Y3264988D01*
+X4076562Y3264645D01*
+X4076752Y3264341D01*
+X4076943Y3264112D01*
+X4077095Y3263960D01*
+X4077171Y3263884D01*
+X4077209Y3263846D01*
+X4077514Y3263655D01*
+X4077818Y3263503D01*
+X4078161Y3263389D01*
+X4078427Y3263312D01*
+X4078694Y3263275D01*
+X4078922Y3263236D01*
+X4079113D01*
+X4079722Y3263275D01*
+X4080293Y3263427D01*
+X4080750Y3263617D01*
+X4081169Y3263846D01*
+X4081512Y3264036D01*
+X4081778Y3264226D01*
+X4081931Y3264379D01*
+X4081968Y3264417D01*
+X4082349Y3264911D01*
+X4082616Y3265483D01*
+X4082806Y3266054D01*
+X4082958Y3266587D01*
+X4083035Y3267082D01*
+X4083073Y3267462D01*
+X4083111Y3267615D01*
+Y3267729D01*
+Y3267805D01*
+Y3267843D01*
+X4070813D01*
+Y3268871D01*
+X4070889Y3269823D01*
+X4071003Y3270699D01*
+X4071155Y3271537D01*
+X4071308Y3272298D01*
+X4071498Y3272983D01*
+X4071726Y3273593D01*
+X4071955Y3274164D01*
+X4072183Y3274621D01*
+X4072374Y3275039D01*
+X4072564Y3275420D01*
+X4072755Y3275687D01*
+X4072907Y3275915D01*
+X4073021Y3276106D01*
+X4073097Y3276182D01*
+X4073135Y3276220D01*
+X4073592Y3276715D01*
+X4074087Y3277133D01*
+X4074620Y3277476D01*
+X4075153Y3277819D01*
+X4075686Y3278085D01*
+X4076219Y3278276D01*
+X4076752Y3278466D01*
+X4077285Y3278618D01*
+X4077742Y3278733D01*
+X4078199Y3278809D01*
+X4078618Y3278885D01*
+X4078961Y3278923D01*
+X4079265Y3278961D01*
+X4079646D01*
+X4080331Y3278923D01*
+D02*
+G37*
+G36*
+X4059657D02*
+X4060380Y3278847D01*
+X4061028Y3278733D01*
+X4061675Y3278542D01*
+X4062246Y3278352D01*
+X4062817Y3278162D01*
+X4063312Y3277895D01*
+X4063731Y3277667D01*
+X4064149Y3277438D01*
+X4064492Y3277210D01*
+X4064797Y3276981D01*
+X4065025Y3276791D01*
+X4065215Y3276601D01*
+X4065368Y3276486D01*
+X4065444Y3276410D01*
+X4065482Y3276372D01*
+X4065901Y3275877D01*
+X4066282Y3275344D01*
+X4066586Y3274773D01*
+X4066853Y3274202D01*
+X4067081Y3273593D01*
+X4067310Y3272983D01*
+X4067576Y3271841D01*
+X4067690Y3271308D01*
+X4067767Y3270851D01*
+X4067805Y3270394D01*
+X4067843Y3270014D01*
+X4067881Y3269709D01*
+Y3269442D01*
+Y3269290D01*
+Y3269252D01*
+X4067843Y3268415D01*
+X4067767Y3267653D01*
+X4067652Y3266891D01*
+X4067500Y3266206D01*
+X4067310Y3265559D01*
+X4067119Y3264988D01*
+X4066891Y3264455D01*
+X4066663Y3263998D01*
+X4066472Y3263541D01*
+X4066244Y3263198D01*
+X4066053Y3262856D01*
+X4065863Y3262589D01*
+X4065710Y3262399D01*
+X4065596Y3262246D01*
+X4065520Y3262170D01*
+X4065482Y3262132D01*
+X4065025Y3261675D01*
+X4064492Y3261295D01*
+X4063959Y3260952D01*
+X4063426Y3260647D01*
+X4062893Y3260419D01*
+X4062360Y3260190D01*
+X4061294Y3259886D01*
+X4060837Y3259810D01*
+X4060380Y3259734D01*
+X4059999Y3259657D01*
+X4059657Y3259619D01*
+X4059352Y3259581D01*
+X4058971D01*
+X4058324Y3259619D01*
+X4057715Y3259657D01*
+X4056573Y3259848D01*
+X4056078Y3259962D01*
+X4055583Y3260114D01*
+X4055164Y3260266D01*
+X4054783Y3260419D01*
+X4054441Y3260571D01*
+X4054136Y3260723D01*
+X4053869Y3260876D01*
+X4053641Y3260990D01*
+X4053489Y3261104D01*
+X4053374Y3261180D01*
+X4053298Y3261256D01*
+X4053260D01*
+X4052880Y3261599D01*
+X4052537Y3261942D01*
+X4051890Y3262741D01*
+X4051395Y3263579D01*
+X4051014Y3264417D01*
+X4050709Y3265140D01*
+X4050595Y3265445D01*
+X4050519Y3265749D01*
+X4050443Y3265978D01*
+X4050405Y3266130D01*
+X4050367Y3266244D01*
+Y3266282D01*
+X4055202Y3267120D01*
+X4055354Y3266435D01*
+X4055545Y3265864D01*
+X4055773Y3265369D01*
+X4056002Y3264988D01*
+X4056192Y3264683D01*
+X4056344Y3264493D01*
+X4056458Y3264379D01*
+X4056497Y3264341D01*
+X4056839Y3264074D01*
+X4057220Y3263884D01*
+X4057601Y3263770D01*
+X4057982Y3263693D01*
+X4058286Y3263617D01*
+X4058553Y3263579D01*
+X4058781D01*
+X4059428Y3263655D01*
+X4060038Y3263807D01*
+X4060533Y3263998D01*
+X4060951Y3264264D01*
+X4061294Y3264493D01*
+X4061560Y3264721D01*
+X4061713Y3264873D01*
+X4061751Y3264911D01*
+X4061941Y3265178D01*
+X4062132Y3265521D01*
+X4062398Y3266206D01*
+X4062589Y3267006D01*
+X4062703Y3267767D01*
+X4062779Y3268491D01*
+X4062817Y3268795D01*
+X4062855Y3269062D01*
+Y3269290D01*
+Y3269442D01*
+Y3269557D01*
+Y3269595D01*
+Y3270128D01*
+X4062817Y3270623D01*
+X4062741Y3271080D01*
+X4062703Y3271498D01*
+X4062512Y3272222D01*
+X4062322Y3272831D01*
+X4062132Y3273250D01*
+X4061941Y3273593D01*
+X4061827Y3273745D01*
+X4061789Y3273821D01*
+X4061332Y3274240D01*
+X4060875Y3274583D01*
+X4060380Y3274811D01*
+X4059885Y3274963D01*
+X4059466Y3275039D01*
+X4059124Y3275116D01*
+X4058819D01*
+X4058324Y3275078D01*
+X4057905Y3275002D01*
+X4057487Y3274887D01*
+X4057182Y3274735D01*
+X4056915Y3274583D01*
+X4056725Y3274468D01*
+X4056611Y3274392D01*
+X4056573Y3274354D01*
+X4056268Y3274049D01*
+X4056040Y3273707D01*
+X4055811Y3273364D01*
+X4055659Y3273022D01*
+X4055545Y3272717D01*
+X4055468Y3272450D01*
+X4055431Y3272298D01*
+Y3272222D01*
+X4050595Y3273098D01*
+X4050976Y3274126D01*
+X4051432Y3275002D01*
+X4051890Y3275763D01*
+X4052385Y3276372D01*
+X4052803Y3276867D01*
+X4053146Y3277210D01*
+X4053412Y3277400D01*
+X4053451Y3277476D01*
+X4053489D01*
+X4054288Y3277971D01*
+X4055202Y3278352D01*
+X4056078Y3278618D01*
+X4056953Y3278771D01*
+X4057715Y3278885D01*
+X4058058Y3278923D01*
+X4058324D01*
+X4058553Y3278961D01*
+X4058895D01*
+X4059657Y3278923D01*
+D02*
+G37*
+G36*
+X3991122Y3260000D02*
+X3981413D01*
+X3980385Y3260038D01*
+X3979510Y3260076D01*
+X3978710Y3260152D01*
+X3978063Y3260266D01*
+X3977530Y3260381D01*
+X3977149Y3260457D01*
+X3977035Y3260495D01*
+X3976920D01*
+X3976844Y3260533D01*
+X3976045Y3260838D01*
+X3975321Y3261142D01*
+X3974712Y3261485D01*
+X3974179Y3261828D01*
+X3973760Y3262094D01*
+X3973456Y3262322D01*
+X3973304Y3262513D01*
+X3973228Y3262551D01*
+X3972580Y3263236D01*
+X3972047Y3263998D01*
+X3971590Y3264759D01*
+X3971171Y3265483D01*
+X3970867Y3266130D01*
+X3970753Y3266396D01*
+X3970676Y3266625D01*
+X3970600Y3266815D01*
+X3970524Y3266967D01*
+X3970486Y3267044D01*
+Y3267082D01*
+X3970219Y3267957D01*
+X3970029Y3268909D01*
+X3969877Y3269823D01*
+X3969801Y3270699D01*
+X3969763Y3271080D01*
+X3969724Y3271422D01*
+Y3271765D01*
+X3969687Y3272032D01*
+Y3272260D01*
+Y3272412D01*
+Y3272527D01*
+Y3272565D01*
+X3969724Y3273859D01*
+X3969801Y3275002D01*
+X3969877Y3275534D01*
+X3969953Y3276029D01*
+X3970029Y3276486D01*
+X3970105Y3276905D01*
+X3970181Y3277286D01*
+X3970258Y3277628D01*
+X3970334Y3277895D01*
+X3970410Y3278162D01*
+X3970448Y3278352D01*
+X3970486Y3278466D01*
+X3970524Y3278542D01*
+Y3278580D01*
+X3970867Y3279456D01*
+X3971248Y3280256D01*
+X3971666Y3280979D01*
+X3972085Y3281588D01*
+X3972428Y3282083D01*
+X3972733Y3282426D01*
+X3972923Y3282654D01*
+X3972961Y3282730D01*
+X3972999D01*
+X3973608Y3283340D01*
+X3974255Y3283835D01*
+X3974903Y3284254D01*
+X3975512Y3284558D01*
+X3976045Y3284825D01*
+X3976464Y3285015D01*
+X3976616Y3285053D01*
+X3976730Y3285091D01*
+X3976806Y3285129D01*
+X3976844D01*
+X3977530Y3285281D01*
+X3978329Y3285434D01*
+X3979129Y3285510D01*
+X3979890Y3285548D01*
+X3980614Y3285586D01*
+X3980919Y3285624D01*
+X3991122D01*
+Y3260000D01*
+D02*
+G37*
+G36*
+X4006924Y3278923D02*
+X4007304Y3278885D01*
+X4007685Y3278771D01*
+X4007990Y3278657D01*
+X4008256Y3278542D01*
+X4008484Y3278466D01*
+X4008599Y3278390D01*
+X4008637Y3278352D01*
+X4008979Y3278085D01*
+X4009360Y3277743D01*
+X4009703Y3277324D01*
+X4010008Y3276905D01*
+X4010274Y3276524D01*
+X4010502Y3276220D01*
+X4010655Y3275991D01*
+X4010693Y3275953D01*
+Y3278580D01*
+X4015262D01*
+Y3260000D01*
+X4010350D01*
+Y3265711D01*
+Y3266549D01*
+Y3267348D01*
+X4010312Y3268034D01*
+X4010274Y3268681D01*
+Y3269252D01*
+X4010236Y3269747D01*
+X4010198Y3270204D01*
+X4010160Y3270585D01*
+X4010122Y3270927D01*
+X4010084Y3271194D01*
+X4010045Y3271422D01*
+Y3271613D01*
+X4010008Y3271765D01*
+X4009969Y3271841D01*
+Y3271917D01*
+X4009817Y3272450D01*
+X4009627Y3272869D01*
+X4009436Y3273212D01*
+X4009246Y3273517D01*
+X4009094Y3273707D01*
+X4008941Y3273859D01*
+X4008865Y3273935D01*
+X4008827Y3273973D01*
+X4008560Y3274164D01*
+X4008256Y3274316D01*
+X4007951Y3274392D01*
+X4007685Y3274468D01*
+X4007456Y3274507D01*
+X4007228Y3274544D01*
+X4007076D01*
+X4006657Y3274507D01*
+X4006276Y3274430D01*
+X4005857Y3274278D01*
+X4005515Y3274126D01*
+X4005210Y3273973D01*
+X4004982Y3273821D01*
+X4004791Y3273745D01*
+X4004753Y3273707D01*
+X4003230Y3278009D01*
+X4003801Y3278314D01*
+X4004410Y3278542D01*
+X4004944Y3278733D01*
+X4005439Y3278847D01*
+X4005857Y3278923D01*
+X4006162Y3278961D01*
+X4006466D01*
+X4006924Y3278923D01*
+D02*
+G37*
+G36*
+X3958949D02*
+X3959597Y3278847D01*
+X3960206Y3278733D01*
+X3960777Y3278542D01*
+X3961310Y3278352D01*
+X3961805Y3278123D01*
+X3962262Y3277895D01*
+X3962681Y3277667D01*
+X3963062Y3277400D01*
+X3963404Y3277172D01*
+X3963671Y3276943D01*
+X3963937Y3276753D01*
+X3964128Y3276562D01*
+X3964242Y3276448D01*
+X3964318Y3276372D01*
+X3964356Y3276334D01*
+X3964775Y3275839D01*
+X3965156Y3275268D01*
+X3965460Y3274697D01*
+X3965727Y3274088D01*
+X3965955Y3273478D01*
+X3966183Y3272907D01*
+X3966450Y3271727D01*
+X3966564Y3271194D01*
+X3966641Y3270699D01*
+X3966678Y3270242D01*
+X3966717Y3269861D01*
+X3966755Y3269557D01*
+Y3269290D01*
+Y3269138D01*
+Y3269100D01*
+X3966717Y3268415D01*
+X3966678Y3267729D01*
+X3966602Y3267082D01*
+X3966450Y3266473D01*
+X3966336Y3265940D01*
+X3966183Y3265406D01*
+X3965993Y3264911D01*
+X3965841Y3264493D01*
+X3965651Y3264074D01*
+X3965498Y3263731D01*
+X3965346Y3263427D01*
+X3965194Y3263198D01*
+X3965079Y3263008D01*
+X3965003Y3262856D01*
+X3964965Y3262780D01*
+X3964927Y3262741D01*
+X3964470Y3262170D01*
+X3963937Y3261713D01*
+X3963404Y3261295D01*
+X3962833Y3260914D01*
+X3962224Y3260609D01*
+X3961653Y3260343D01*
+X3961043Y3260152D01*
+X3960472Y3259962D01*
+X3959939Y3259848D01*
+X3959406Y3259734D01*
+X3958949Y3259695D01*
+X3958569Y3259619D01*
+X3958226D01*
+X3957998Y3259581D01*
+X3957769D01*
+X3956665Y3259657D01*
+X3955675Y3259810D01*
+X3954837Y3260000D01*
+X3954076Y3260266D01*
+X3953771Y3260381D01*
+X3953505Y3260533D01*
+X3953276Y3260647D01*
+X3953048Y3260723D01*
+X3952896Y3260838D01*
+X3952781Y3260876D01*
+X3952743Y3260952D01*
+X3952705D01*
+X3951982Y3261523D01*
+X3951373Y3262208D01*
+X3950840Y3262856D01*
+X3950421Y3263541D01*
+X3950116Y3264150D01*
+X3949964Y3264379D01*
+X3949888Y3264607D01*
+X3949811Y3264797D01*
+X3949735Y3264950D01*
+X3949697Y3265026D01*
+Y3265064D01*
+X3954609Y3265901D01*
+X3954799Y3265406D01*
+X3954990Y3264988D01*
+X3955180Y3264645D01*
+X3955370Y3264341D01*
+X3955561Y3264112D01*
+X3955713Y3263960D01*
+X3955789Y3263884D01*
+X3955827Y3263846D01*
+X3956132Y3263655D01*
+X3956436Y3263503D01*
+X3956779Y3263389D01*
+X3957046Y3263312D01*
+X3957312Y3263275D01*
+X3957541Y3263236D01*
+X3957731D01*
+X3958340Y3263275D01*
+X3958911Y3263427D01*
+X3959368Y3263617D01*
+X3959787Y3263846D01*
+X3960130Y3264036D01*
+X3960396Y3264226D01*
+X3960549Y3264379D01*
+X3960587Y3264417D01*
+X3960967Y3264911D01*
+X3961234Y3265483D01*
+X3961424Y3266054D01*
+X3961577Y3266587D01*
+X3961653Y3267082D01*
+X3961691Y3267462D01*
+X3961729Y3267615D01*
+Y3267729D01*
+Y3267805D01*
+Y3267843D01*
+X3949431D01*
+Y3268871D01*
+X3949507Y3269823D01*
+X3949621Y3270699D01*
+X3949774Y3271537D01*
+X3949926Y3272298D01*
+X3950116Y3272983D01*
+X3950345Y3273593D01*
+X3950573Y3274164D01*
+X3950801Y3274621D01*
+X3950992Y3275039D01*
+X3951182Y3275420D01*
+X3951373Y3275687D01*
+X3951525Y3275915D01*
+X3951639Y3276106D01*
+X3951715Y3276182D01*
+X3951753Y3276220D01*
+X3952210Y3276715D01*
+X3952705Y3277133D01*
+X3953238Y3277476D01*
+X3953771Y3277819D01*
+X3954304Y3278085D01*
+X3954837Y3278276D01*
+X3955370Y3278466D01*
+X3955904Y3278618D01*
+X3956360Y3278733D01*
+X3956817Y3278809D01*
+X3957236Y3278885D01*
+X3957579Y3278923D01*
+X3957883Y3278961D01*
+X3958264D01*
+X3958949Y3278923D01*
+D02*
+G37*
+G36*
+X3805960Y3222009D02*
+X3801391D01*
+Y3224712D01*
+X3800972Y3224179D01*
+X3800515Y3223684D01*
+X3800058Y3223265D01*
+X3799678Y3222961D01*
+X3799297Y3222694D01*
+X3799030Y3222504D01*
+X3798840Y3222390D01*
+X3798764Y3222351D01*
+X3798193Y3222085D01*
+X3797621Y3221895D01*
+X3797089Y3221780D01*
+X3796594Y3221704D01*
+X3796175Y3221628D01*
+X3795870Y3221590D01*
+X3795604D01*
+X3794995Y3221628D01*
+X3794423Y3221704D01*
+X3793890Y3221819D01*
+X3793357Y3222009D01*
+X3792444Y3222390D01*
+X3791644Y3222885D01*
+X3791263Y3223113D01*
+X3790959Y3223341D01*
+X3790692Y3223532D01*
+X3790502Y3223760D01*
+X3790311Y3223913D01*
+X3790197Y3224027D01*
+X3790121Y3224103D01*
+X3790083Y3224141D01*
+X3789664Y3224636D01*
+X3789321Y3225207D01*
+X3789017Y3225778D01*
+X3788750Y3226349D01*
+X3788522Y3226959D01*
+X3788369Y3227568D01*
+X3788065Y3228748D01*
+X3787989Y3229319D01*
+X3787913Y3229814D01*
+X3787874Y3230271D01*
+X3787836Y3230652D01*
+X3787798Y3230995D01*
+Y3231261D01*
+Y3231413D01*
+Y3231451D01*
+X3787836Y3232289D01*
+X3787913Y3233089D01*
+X3787989Y3233812D01*
+X3788141Y3234497D01*
+X3788331Y3235145D01*
+X3788522Y3235716D01*
+X3788712Y3236249D01*
+X3788903Y3236706D01*
+X3789131Y3237125D01*
+X3789321Y3237467D01*
+X3789512Y3237772D01*
+X3789702Y3238038D01*
+X3789854Y3238228D01*
+X3789930Y3238381D01*
+X3790007Y3238457D01*
+X3790045Y3238495D01*
+X3790464Y3238914D01*
+X3790920Y3239295D01*
+X3791377Y3239637D01*
+X3791872Y3239942D01*
+X3792329Y3240170D01*
+X3792786Y3240361D01*
+X3793700Y3240665D01*
+X3794119Y3240780D01*
+X3794461Y3240856D01*
+X3794804Y3240894D01*
+X3795109Y3240932D01*
+X3795337Y3240970D01*
+X3795680D01*
+X3796251Y3240932D01*
+X3796822Y3240856D01*
+X3797317Y3240742D01*
+X3797850Y3240551D01*
+X3798764Y3240170D01*
+X3799525Y3239676D01*
+X3799868Y3239447D01*
+X3800173Y3239219D01*
+X3800439Y3238990D01*
+X3800630Y3238800D01*
+X3800820Y3238609D01*
+X3800934Y3238495D01*
+X3801010Y3238419D01*
+X3801048Y3238381D01*
+Y3247633D01*
+X3805960D01*
+Y3222009D01*
+D02*
+G37*
+G36*
+X4105912Y3240932D02*
+X4106292Y3240894D01*
+X4106673Y3240780D01*
+X4106978Y3240665D01*
+X4107244Y3240551D01*
+X4107473Y3240475D01*
+X4107587Y3240399D01*
+X4107625Y3240361D01*
+X4107968Y3240094D01*
+X4108348Y3239752D01*
+X4108691Y3239333D01*
+X4108996Y3238914D01*
+X4109262Y3238533D01*
+X4109491Y3238228D01*
+X4109643Y3238000D01*
+X4109681Y3237962D01*
+Y3240589D01*
+X4114250D01*
+Y3222009D01*
+X4109338D01*
+Y3227720D01*
+Y3228558D01*
+Y3229357D01*
+X4109300Y3230043D01*
+X4109262Y3230690D01*
+Y3231261D01*
+X4109224Y3231756D01*
+X4109186Y3232213D01*
+X4109148Y3232594D01*
+X4109110Y3232936D01*
+X4109072Y3233203D01*
+X4109034Y3233431D01*
+Y3233622D01*
+X4108996Y3233774D01*
+X4108958Y3233850D01*
+Y3233926D01*
+X4108805Y3234459D01*
+X4108615Y3234878D01*
+X4108425Y3235221D01*
+X4108234Y3235525D01*
+X4108082Y3235716D01*
+X4107930Y3235868D01*
+X4107853Y3235944D01*
+X4107816Y3235982D01*
+X4107549Y3236172D01*
+X4107244Y3236325D01*
+X4106940Y3236401D01*
+X4106673Y3236477D01*
+X4106445Y3236515D01*
+X4106216Y3236553D01*
+X4106064D01*
+X4105645Y3236515D01*
+X4105264Y3236439D01*
+X4104846Y3236287D01*
+X4104503Y3236135D01*
+X4104198Y3235982D01*
+X4103970Y3235830D01*
+X4103780Y3235754D01*
+X4103741Y3235716D01*
+X4102224Y3240001D01*
+X4095403Y3221971D01*
+X4095593Y3221400D01*
+X4095784Y3220905D01*
+X4096012Y3220486D01*
+X4096203Y3220105D01*
+X4096393Y3219800D01*
+X4096545Y3219610D01*
+X4096660Y3219458D01*
+X4096698Y3219420D01*
+X4097040Y3219077D01*
+X4097421Y3218811D01*
+X4097840Y3218658D01*
+X4098259Y3218506D01*
+X4098640Y3218430D01*
+X4098944Y3218392D01*
+X4099211D01*
+X4099934Y3218430D01*
+X4100276Y3218468D01*
+X4100581Y3218506D01*
+X4100848Y3218544D01*
+X4101076Y3218582D01*
+X4101229Y3218620D01*
+X4101266D01*
+X4100848Y3214775D01*
+X4099858Y3214584D01*
+X4099363Y3214546D01*
+X4098944Y3214508D01*
+X4098601Y3214470D01*
+X4097573D01*
+X4097116Y3214508D01*
+X4096698Y3214584D01*
+X4096317Y3214622D01*
+X4096012Y3214698D01*
+X4095784Y3214737D01*
+X4095631Y3214775D01*
+X4095593D01*
+X4095175Y3214889D01*
+X4094794Y3215041D01*
+X4094489Y3215193D01*
+X4094223Y3215308D01*
+X4093994Y3215422D01*
+X4093842Y3215536D01*
+X4093728Y3215574D01*
+X4093690Y3215612D01*
+X4093157Y3216069D01*
+X4092738Y3216526D01*
+X4092585Y3216717D01*
+X4092471Y3216869D01*
+X4092395Y3216983D01*
+X4092357Y3217021D01*
+X4092129Y3217364D01*
+X4091900Y3217744D01*
+X4091672Y3218163D01*
+X4091481Y3218582D01*
+X4091329Y3218925D01*
+X4091215Y3219229D01*
+X4091139Y3219420D01*
+X4091100Y3219496D01*
+X4089920Y3222694D01*
+X4083372Y3240589D01*
+X4088474D01*
+X4092814Y3227377D01*
+X4097231Y3240589D01*
+X4102447D01*
+X4102234Y3240027D01*
+X4102790Y3240323D01*
+X4103399Y3240551D01*
+X4103932Y3240742D01*
+X4104427Y3240856D01*
+X4104846Y3240932D01*
+X4105150Y3240970D01*
+X4105455D01*
+X4105912Y3240932D01*
+D02*
+G37*
+G36*
+X3828234D02*
+X3828843Y3240856D01*
+X3829414Y3240703D01*
+X3829947Y3240513D01*
+X3830937Y3240056D01*
+X3831394Y3239790D01*
+X3831775Y3239523D01*
+X3832155Y3239219D01*
+X3832460Y3238952D01*
+X3832765Y3238723D01*
+X3832993Y3238495D01*
+X3833183Y3238305D01*
+X3833297Y3238152D01*
+X3833374Y3238076D01*
+X3833412Y3238038D01*
+Y3240589D01*
+X3837943D01*
+Y3222009D01*
+X3833031D01*
+Y3230995D01*
+Y3231908D01*
+X3832955Y3232708D01*
+X3832917Y3233355D01*
+X3832841Y3233888D01*
+X3832765Y3234307D01*
+X3832726Y3234573D01*
+X3832650Y3234764D01*
+Y3234802D01*
+X3832498Y3235221D01*
+X3832270Y3235563D01*
+X3832079Y3235868D01*
+X3831851Y3236096D01*
+X3831660Y3236287D01*
+X3831508Y3236439D01*
+X3831394Y3236515D01*
+X3831356Y3236553D01*
+X3831013Y3236782D01*
+X3830632Y3236934D01*
+X3830290Y3237048D01*
+X3829985Y3237125D01*
+X3829719Y3237162D01*
+X3829490Y3237201D01*
+X3828957D01*
+X3828652Y3237125D01*
+X3828424Y3237086D01*
+X3828195Y3237010D01*
+X3828043Y3236934D01*
+X3827929Y3236858D01*
+X3827853Y3236820D01*
+X3827815Y3236782D01*
+X3827625Y3236630D01*
+X3827434Y3236439D01*
+X3827167Y3236058D01*
+X3827091Y3235868D01*
+X3827015Y3235716D01*
+X3826977Y3235640D01*
+Y3235602D01*
+X3826939Y3235449D01*
+X3826901Y3235221D01*
+X3826825Y3234726D01*
+X3826787Y3234155D01*
+X3826749Y3233583D01*
+X3826711Y3233051D01*
+Y3232556D01*
+Y3232403D01*
+Y3232251D01*
+Y3232175D01*
+Y3232137D01*
+Y3222009D01*
+X3821799D01*
+Y3230880D01*
+Y3231794D01*
+X3821723Y3232594D01*
+X3821685Y3233241D01*
+X3821609Y3233774D01*
+X3821533Y3234193D01*
+X3821494Y3234497D01*
+X3821418Y3234688D01*
+Y3234726D01*
+X3821228Y3235145D01*
+X3821038Y3235525D01*
+X3820809Y3235830D01*
+X3820619Y3236096D01*
+X3820428Y3236287D01*
+X3820276Y3236439D01*
+X3820162Y3236515D01*
+X3820124Y3236553D01*
+X3819781Y3236782D01*
+X3819438Y3236934D01*
+X3819096Y3237048D01*
+X3818791Y3237125D01*
+X3818563Y3237162D01*
+X3818372Y3237201D01*
+X3818182D01*
+X3817687Y3237162D01*
+X3817268Y3237048D01*
+X3816888Y3236858D01*
+X3816621Y3236667D01*
+X3816393Y3236477D01*
+X3816202Y3236287D01*
+X3816126Y3236172D01*
+X3816088Y3236135D01*
+X3816012Y3235982D01*
+X3815898Y3235754D01*
+X3815783Y3235259D01*
+X3815669Y3234650D01*
+X3815631Y3234078D01*
+X3815593Y3233507D01*
+X3815555Y3233051D01*
+Y3232860D01*
+Y3232708D01*
+Y3232632D01*
+Y3232594D01*
+Y3222009D01*
+X3810643D01*
+Y3233850D01*
+X3810681Y3234764D01*
+X3810719Y3235563D01*
+X3810795Y3236249D01*
+X3810910Y3236782D01*
+X3811024Y3237201D01*
+X3811100Y3237467D01*
+X3811138Y3237657D01*
+X3811176Y3237696D01*
+X3811443Y3238267D01*
+X3811785Y3238762D01*
+X3812128Y3239181D01*
+X3812471Y3239523D01*
+X3812775Y3239790D01*
+X3813042Y3239980D01*
+X3813194Y3240094D01*
+X3813270Y3240132D01*
+X3813841Y3240399D01*
+X3814413Y3240627D01*
+X3814984Y3240780D01*
+X3815517Y3240856D01*
+X3816012Y3240932D01*
+X3816393Y3240970D01*
+X3816735D01*
+X3817306Y3240932D01*
+X3817877Y3240856D01*
+X3818410Y3240742D01*
+X3818867Y3240589D01*
+X3819248Y3240437D01*
+X3819514Y3240323D01*
+X3819705Y3240247D01*
+X3819781Y3240208D01*
+X3820314Y3239904D01*
+X3820771Y3239561D01*
+X3821228Y3239181D01*
+X3821609Y3238838D01*
+X3821951Y3238495D01*
+X3822180Y3238228D01*
+X3822370Y3238076D01*
+X3822408Y3238000D01*
+X3822751Y3238533D01*
+X3823094Y3238990D01*
+X3823474Y3239371D01*
+X3823817Y3239676D01*
+X3824121Y3239904D01*
+X3824350Y3240056D01*
+X3824502Y3240170D01*
+X3824579Y3240208D01*
+X3825074Y3240475D01*
+X3825606Y3240665D01*
+X3826101Y3240780D01*
+X3826596Y3240894D01*
+X3827015Y3240932D01*
+X3827320Y3240970D01*
+X3827625D01*
+X3828234Y3240932D01*
+D02*
+G37*
+G36*
+X3950948D02*
+X3951557Y3240856D01*
+X3952090Y3240780D01*
+X3952547Y3240665D01*
+X3953004Y3240551D01*
+X3953423Y3240437D01*
+X3953804Y3240323D01*
+X3954108Y3240170D01*
+X3954375Y3240056D01*
+X3954641Y3239942D01*
+X3954832Y3239866D01*
+X3954984Y3239752D01*
+X3955098Y3239713D01*
+X3955136Y3239637D01*
+X3955174D01*
+X3955822Y3239104D01*
+X3956355Y3238457D01*
+X3956773Y3237810D01*
+X3957116Y3237162D01*
+X3957383Y3236553D01*
+X3957497Y3236325D01*
+X3957573Y3236096D01*
+X3957649Y3235906D01*
+X3957687Y3235754D01*
+X3957725Y3235677D01*
+Y3235640D01*
+X3953309Y3234840D01*
+X3953118Y3235297D01*
+X3952928Y3235677D01*
+X3952737Y3235982D01*
+X3952547Y3236249D01*
+X3952395Y3236439D01*
+X3952243Y3236553D01*
+X3952166Y3236630D01*
+X3952128Y3236667D01*
+X3951824Y3236858D01*
+X3951519Y3236972D01*
+X3950834Y3237125D01*
+X3950529Y3237162D01*
+X3950301Y3237201D01*
+X3950072D01*
+X3949387Y3237162D01*
+X3948854Y3237125D01*
+X3948359Y3237010D01*
+X3948016Y3236896D01*
+X3947750Y3236782D01*
+X3947560Y3236706D01*
+X3947445Y3236630D01*
+X3947407Y3236591D01*
+X3947179Y3236325D01*
+X3946988Y3236020D01*
+X3946874Y3235677D01*
+X3946760Y3235335D01*
+X3946722Y3235031D01*
+X3946684Y3234764D01*
+Y3234612D01*
+Y3234536D01*
+Y3234078D01*
+X3946950Y3233964D01*
+X3947255Y3233850D01*
+X3947978Y3233660D01*
+X3948778Y3233431D01*
+X3949577Y3233241D01*
+X3950301Y3233089D01*
+X3950643Y3233012D01*
+X3950910Y3232974D01*
+X3951138Y3232936D01*
+X3951329Y3232898D01*
+X3951443Y3232860D01*
+X3951481D01*
+X3952395Y3232670D01*
+X3953156Y3232479D01*
+X3953842Y3232289D01*
+X3954413Y3232099D01*
+X3954832Y3231946D01*
+X3955136Y3231832D01*
+X3955327Y3231756D01*
+X3955403Y3231718D01*
+X3955860Y3231451D01*
+X3956278Y3231147D01*
+X3956659Y3230842D01*
+X3956964Y3230538D01*
+X3957192Y3230233D01*
+X3957345Y3230005D01*
+X3957459Y3229852D01*
+X3957497Y3229814D01*
+X3957725Y3229357D01*
+X3957916Y3228862D01*
+X3958030Y3228405D01*
+X3958144Y3227986D01*
+X3958182Y3227606D01*
+X3958220Y3227301D01*
+Y3227111D01*
+Y3227035D01*
+X3958182Y3226616D01*
+X3958144Y3226197D01*
+X3957954Y3225435D01*
+X3957687Y3224750D01*
+X3957383Y3224179D01*
+X3957116Y3223722D01*
+X3956850Y3223380D01*
+X3956659Y3223189D01*
+X3956583Y3223151D01*
+Y3223113D01*
+X3955936Y3222618D01*
+X3955174Y3222237D01*
+X3954451Y3221971D01*
+X3953727Y3221780D01*
+X3953080Y3221666D01*
+X3952814Y3221628D01*
+X3952547D01*
+X3952357Y3221590D01*
+X3952090D01*
+X3951481Y3221628D01*
+X3950910Y3221704D01*
+X3950415Y3221780D01*
+X3949958Y3221895D01*
+X3949577Y3222009D01*
+X3949273Y3222123D01*
+X3949120Y3222161D01*
+X3949044Y3222199D01*
+X3948511Y3222466D01*
+X3948016Y3222732D01*
+X3947560Y3223037D01*
+X3947141Y3223341D01*
+X3946798Y3223608D01*
+X3946570Y3223836D01*
+X3946379Y3223989D01*
+X3946341Y3224027D01*
+X3946303Y3223875D01*
+X3946265Y3223684D01*
+X3946189Y3223532D01*
+Y3223494D01*
+Y3223456D01*
+X3946075Y3223113D01*
+X3945998Y3222809D01*
+X3945922Y3222580D01*
+X3945846Y3222351D01*
+X3945770Y3222199D01*
+X3945732Y3222085D01*
+X3945694Y3222047D01*
+Y3222009D01*
+X3940820D01*
+X3941049Y3222504D01*
+X3941239Y3222923D01*
+X3941391Y3223341D01*
+X3941505Y3223722D01*
+X3941582Y3224027D01*
+X3941658Y3224255D01*
+X3941696Y3224407D01*
+Y3224445D01*
+X3941772Y3224940D01*
+X3941810Y3225512D01*
+X3941886Y3226121D01*
+Y3226730D01*
+X3941924Y3227263D01*
+Y3227682D01*
+Y3227872D01*
+Y3227986D01*
+Y3228063D01*
+Y3228101D01*
+X3941848Y3233812D01*
+Y3234383D01*
+X3941886Y3234916D01*
+X3941924Y3235411D01*
+X3941962Y3235830D01*
+X3942000Y3236249D01*
+X3942077Y3236591D01*
+X3942115Y3236934D01*
+X3942191Y3237201D01*
+X3942305Y3237657D01*
+X3942419Y3237962D01*
+X3942495Y3238152D01*
+X3942534Y3238191D01*
+X3942800Y3238609D01*
+X3943181Y3239028D01*
+X3943524Y3239371D01*
+X3943904Y3239637D01*
+X3944247Y3239866D01*
+X3944551Y3240018D01*
+X3944742Y3240132D01*
+X3944780Y3240170D01*
+X3944818D01*
+X3945123Y3240323D01*
+X3945504Y3240437D01*
+X3946265Y3240627D01*
+X3947065Y3240780D01*
+X3947864Y3240856D01*
+X3948587Y3240932D01*
+X3948892D01*
+X3949159Y3240970D01*
+X3950339D01*
+X3950948Y3240932D01*
+D02*
+G37*
+G36*
+X3783839Y3222009D02*
+X3778661D01*
+Y3233203D01*
+X3768533D01*
+Y3222009D01*
+X3763354D01*
+Y3247633D01*
+X3768533D01*
+Y3237543D01*
+X3778661D01*
+Y3247633D01*
+X3783839D01*
+Y3222009D01*
+D02*
+G37*
+G36*
+X3701467Y2372069D02*
+X3691403D01*
+X3701467Y2369539D01*
+Y2367066D01*
+X3691403Y2364516D01*
+X3701467Y2364497D01*
+Y2362100D01*
+X3688664D01*
+Y2366000D01*
+X3697415Y2368283D01*
+X3688664Y2370604D01*
+Y2374466D01*
+X3701467D01*
+Y2372069D01*
+D02*
+G37*
+G36*
+X3695703Y2424596D02*
+X3696235Y2424539D01*
+X3696730Y2424463D01*
+X3697187Y2424349D01*
+X3697624Y2424234D01*
+X3698004Y2424082D01*
+X3698366Y2423930D01*
+X3698689Y2423778D01*
+X3698975Y2423626D01*
+X3699241Y2423474D01*
+X3699450Y2423321D01*
+X3699622Y2423207D01*
+X3699774Y2423093D01*
+X3699869Y2423017D01*
+X3699926Y2422960D01*
+X3699945Y2422941D01*
+X3700249Y2422617D01*
+X3700516Y2422256D01*
+X3700744Y2421895D01*
+X3700953Y2421533D01*
+X3701106Y2421152D01*
+X3701258Y2420772D01*
+X3701372Y2420411D01*
+X3701467Y2420049D01*
+X3701524Y2419707D01*
+X3701581Y2419402D01*
+X3701619Y2419117D01*
+X3701657Y2418889D01*
+Y2418679D01*
+X3701676Y2418546D01*
+Y2418451D01*
+Y2418413D01*
+X3701657Y2417899D01*
+X3701600Y2417405D01*
+X3701524Y2416948D01*
+X3701410Y2416510D01*
+X3701277Y2416111D01*
+X3701125Y2415750D01*
+X3700972Y2415407D01*
+X3700801Y2415103D01*
+X3700649Y2414817D01*
+X3700497Y2414589D01*
+X3700345Y2414380D01*
+X3700211Y2414209D01*
+X3700097Y2414075D01*
+X3700021Y2413980D01*
+X3699964Y2413923D01*
+X3699945Y2413904D01*
+X3699603Y2413600D01*
+X3699241Y2413352D01*
+X3698842Y2413124D01*
+X3698442Y2412934D01*
+X3698043Y2412763D01*
+X3697643Y2412630D01*
+X3697244Y2412515D01*
+X3696863Y2412420D01*
+X3696501Y2412344D01*
+X3696159Y2412306D01*
+X3695874Y2412268D01*
+X3695607Y2412230D01*
+X3695398D01*
+X3695227Y2412211D01*
+X3695094D01*
+X3694523Y2412230D01*
+X3693990Y2412287D01*
+X3693477Y2412363D01*
+X3693020Y2412477D01*
+X3692582Y2412610D01*
+X3692183Y2412744D01*
+X3691822Y2412915D01*
+X3691479Y2413067D01*
+X3691194Y2413219D01*
+X3690946Y2413371D01*
+X3690718Y2413524D01*
+X3690547Y2413657D01*
+X3690414Y2413771D01*
+X3690300Y2413847D01*
+X3690243Y2413904D01*
+X3690223Y2413923D01*
+X3689919Y2414247D01*
+X3689634Y2414608D01*
+X3689406Y2414969D01*
+X3689196Y2415350D01*
+X3689025Y2415712D01*
+X3688892Y2416092D01*
+X3688777Y2416453D01*
+X3688683Y2416815D01*
+X3688606Y2417138D01*
+X3688549Y2417443D01*
+X3688511Y2417728D01*
+X3688473Y2417956D01*
+Y2418166D01*
+X3688454Y2418299D01*
+Y2418394D01*
+Y2418432D01*
+X3688473Y2419003D01*
+X3688530Y2419516D01*
+X3688625Y2419992D01*
+X3688701Y2420392D01*
+X3688759Y2420563D01*
+X3688797Y2420734D01*
+X3688854Y2420867D01*
+X3688892Y2420981D01*
+X3688911Y2421076D01*
+X3688949Y2421134D01*
+X3688968Y2421172D01*
+Y2421191D01*
+X3689120Y2421533D01*
+X3689310Y2421837D01*
+X3689500Y2422123D01*
+X3689691Y2422370D01*
+X3689862Y2422579D01*
+X3689995Y2422732D01*
+X3690090Y2422827D01*
+X3690128Y2422865D01*
+X3690414Y2423131D01*
+X3690718Y2423359D01*
+X3691023Y2423569D01*
+X3691289Y2423740D01*
+X3691517Y2423873D01*
+X3691707Y2423968D01*
+X3691783Y2424006D01*
+X3691841Y2424025D01*
+X3691860Y2424044D01*
+X3691879D01*
+X3692392Y2424234D01*
+X3692944Y2424368D01*
+X3693496Y2424482D01*
+X3694009Y2424539D01*
+X3694238Y2424558D01*
+X3694466Y2424577D01*
+X3694656Y2424596D01*
+X3694827D01*
+X3694961Y2424615D01*
+X3695151D01*
+X3695703Y2424596D01*
+D02*
+G37*
+G36*
+X3701467Y2432643D02*
+Y2432206D01*
+Y2431806D01*
+Y2431445D01*
+X3701448Y2431102D01*
+Y2430817D01*
+Y2430570D01*
+X3701429Y2430341D01*
+Y2430151D01*
+Y2429999D01*
+X3701410Y2429866D01*
+Y2429752D01*
+Y2429657D01*
+X3701391Y2429599D01*
+Y2429561D01*
+Y2429523D01*
+X3701334Y2429162D01*
+X3701239Y2428819D01*
+X3701143Y2428515D01*
+X3701049Y2428268D01*
+X3700953Y2428078D01*
+X3700858Y2427925D01*
+X3700801Y2427830D01*
+X3700782Y2427792D01*
+X3700592Y2427545D01*
+X3700363Y2427316D01*
+X3700154Y2427126D01*
+X3699945Y2426974D01*
+X3699755Y2426860D01*
+X3699603Y2426765D01*
+X3699507Y2426708D01*
+X3699469Y2426689D01*
+X3699146Y2426555D01*
+X3698842Y2426441D01*
+X3698556Y2426365D01*
+X3698290Y2426327D01*
+X3698081Y2426289D01*
+X3697910Y2426270D01*
+X3697757D01*
+X3697358Y2426289D01*
+X3696996Y2426365D01*
+X3696673Y2426460D01*
+X3696388Y2426575D01*
+X3696159Y2426708D01*
+X3695988Y2426803D01*
+X3695874Y2426879D01*
+X3695836Y2426898D01*
+X3695551Y2427164D01*
+X3695303Y2427450D01*
+X3695094Y2427754D01*
+X3694922Y2428039D01*
+X3694808Y2428306D01*
+X3694713Y2428515D01*
+X3694694Y2428591D01*
+X3694675Y2428648D01*
+X3694656Y2428686D01*
+Y2428705D01*
+X3694504Y2428401D01*
+X3694333Y2428154D01*
+X3694142Y2427925D01*
+X3693971Y2427735D01*
+X3693800Y2427583D01*
+X3693667Y2427488D01*
+X3693591Y2427412D01*
+X3693553Y2427393D01*
+X3693268Y2427221D01*
+X3692963Y2427107D01*
+X3692697Y2427012D01*
+X3692430Y2426955D01*
+X3692221Y2426917D01*
+X3692050Y2426898D01*
+X3691898D01*
+X3691593Y2426917D01*
+X3691308Y2426955D01*
+X3691060Y2427031D01*
+X3690832Y2427088D01*
+X3690642Y2427164D01*
+X3690509Y2427240D01*
+X3690433Y2427278D01*
+X3690395Y2427298D01*
+X3690166Y2427450D01*
+X3689938Y2427621D01*
+X3689767Y2427792D01*
+X3689615Y2427944D01*
+X3689482Y2428078D01*
+X3689406Y2428192D01*
+X3689348Y2428268D01*
+X3689329Y2428287D01*
+X3689196Y2428515D01*
+X3689082Y2428743D01*
+X3688987Y2428972D01*
+X3688911Y2429181D01*
+X3688854Y2429352D01*
+X3688816Y2429485D01*
+X3688797Y2429580D01*
+Y2429619D01*
+X3688759Y2429923D01*
+X3688720Y2430284D01*
+X3688701Y2430665D01*
+X3688683Y2431026D01*
+X3688664Y2431369D01*
+Y2431502D01*
+Y2431635D01*
+Y2431730D01*
+Y2431806D01*
+Y2431863D01*
+Y2431882D01*
+Y2437000D01*
+X3701467D01*
+Y2432643D01*
+D02*
+G37*
+G36*
+X3690832Y2407284D02*
+X3701467D01*
+Y2404696D01*
+X3690832D01*
+Y2400929D01*
+X3688664D01*
+Y2411089D01*
+X3690832D01*
+Y2407284D01*
+D02*
+G37*
+G36*
+X3695703Y2388849D02*
+X3696235Y2388792D01*
+X3696730Y2388716D01*
+X3697187Y2388601D01*
+X3697624Y2388487D01*
+X3698004Y2388335D01*
+X3698366Y2388183D01*
+X3698689Y2388031D01*
+X3698975Y2387879D01*
+X3699241Y2387726D01*
+X3699450Y2387574D01*
+X3699622Y2387460D01*
+X3699774Y2387346D01*
+X3699869Y2387270D01*
+X3699926Y2387213D01*
+X3699945Y2387194D01*
+X3700249Y2386870D01*
+X3700516Y2386509D01*
+X3700744Y2386147D01*
+X3700953Y2385786D01*
+X3701106Y2385405D01*
+X3701258Y2385025D01*
+X3701372Y2384663D01*
+X3701467Y2384302D01*
+X3701524Y2383959D01*
+X3701581Y2383655D01*
+X3701619Y2383370D01*
+X3701657Y2383141D01*
+Y2382932D01*
+X3701676Y2382799D01*
+Y2382704D01*
+Y2382666D01*
+X3701657Y2382152D01*
+X3701600Y2381657D01*
+X3701524Y2381201D01*
+X3701410Y2380763D01*
+X3701277Y2380364D01*
+X3701125Y2380002D01*
+X3700972Y2379660D01*
+X3700801Y2379355D01*
+X3700649Y2379070D01*
+X3700497Y2378842D01*
+X3700345Y2378633D01*
+X3700211Y2378461D01*
+X3700097Y2378328D01*
+X3700021Y2378233D01*
+X3699964Y2378176D01*
+X3699945Y2378157D01*
+X3699603Y2377852D01*
+X3699241Y2377605D01*
+X3698842Y2377377D01*
+X3698442Y2377187D01*
+X3698043Y2377015D01*
+X3697643Y2376882D01*
+X3697244Y2376768D01*
+X3696863Y2376673D01*
+X3696501Y2376597D01*
+X3696159Y2376559D01*
+X3695874Y2376521D01*
+X3695607Y2376483D01*
+X3695398D01*
+X3695227Y2376464D01*
+X3695094D01*
+X3694523Y2376483D01*
+X3693990Y2376540D01*
+X3693477Y2376616D01*
+X3693020Y2376730D01*
+X3692582Y2376863D01*
+X3692183Y2376996D01*
+X3691822Y2377168D01*
+X3691479Y2377320D01*
+X3691194Y2377472D01*
+X3690946Y2377624D01*
+X3690718Y2377776D01*
+X3690547Y2377910D01*
+X3690414Y2378024D01*
+X3690300Y2378100D01*
+X3690243Y2378157D01*
+X3690223Y2378176D01*
+X3689919Y2378499D01*
+X3689634Y2378861D01*
+X3689406Y2379222D01*
+X3689196Y2379603D01*
+X3689025Y2379964D01*
+X3688892Y2380345D01*
+X3688777Y2380706D01*
+X3688683Y2381068D01*
+X3688606Y2381391D01*
+X3688549Y2381696D01*
+X3688511Y2381981D01*
+X3688473Y2382209D01*
+Y2382418D01*
+X3688454Y2382552D01*
+Y2382647D01*
+Y2382685D01*
+X3688473Y2383255D01*
+X3688530Y2383769D01*
+X3688625Y2384245D01*
+X3688701Y2384644D01*
+X3688759Y2384816D01*
+X3688797Y2384987D01*
+X3688854Y2385120D01*
+X3688892Y2385234D01*
+X3688911Y2385329D01*
+X3688949Y2385386D01*
+X3688968Y2385424D01*
+Y2385443D01*
+X3689120Y2385786D01*
+X3689310Y2386090D01*
+X3689500Y2386375D01*
+X3689691Y2386623D01*
+X3689862Y2386832D01*
+X3689995Y2386984D01*
+X3690090Y2387079D01*
+X3690128Y2387117D01*
+X3690414Y2387384D01*
+X3690718Y2387612D01*
+X3691023Y2387821D01*
+X3691289Y2387993D01*
+X3691517Y2388126D01*
+X3691707Y2388221D01*
+X3691783Y2388259D01*
+X3691841Y2388278D01*
+X3691860Y2388297D01*
+X3691879D01*
+X3692392Y2388487D01*
+X3692944Y2388620D01*
+X3693496Y2388735D01*
+X3694009Y2388792D01*
+X3694238Y2388811D01*
+X3694466Y2388830D01*
+X3694656Y2388849D01*
+X3694827D01*
+X3694961Y2388868D01*
+X3695151D01*
+X3695703Y2388849D01*
+D02*
+G37*
+G36*
+X3690832Y2396364D02*
+X3701467D01*
+Y2393776D01*
+X3690832D01*
+Y2390009D01*
+X3688664D01*
+Y2400168D01*
+X3690832D01*
+Y2396364D01*
+D02*
+G37*
+G36*
+X4129785Y3248014D02*
+X4130698Y3247899D01*
+X4131574Y3247709D01*
+X4132411Y3247519D01*
+X4133173Y3247214D01*
+X4133896Y3246948D01*
+X4134544Y3246605D01*
+X4135153Y3246300D01*
+X4135686Y3245958D01*
+X4136143Y3245615D01*
+X4136524Y3245349D01*
+X4136866Y3245082D01*
+X4137133Y3244854D01*
+X4137323Y3244663D01*
+X4137437Y3244549D01*
+X4137476Y3244511D01*
+X4138047Y3243826D01*
+X4138542Y3243064D01*
+X4138998Y3242264D01*
+X4139379Y3241465D01*
+X4139684Y3240627D01*
+X4139950Y3239828D01*
+X4140179Y3238990D01*
+X4140331Y3238228D01*
+X4140483Y3237467D01*
+X4140559Y3236782D01*
+X4140636Y3236172D01*
+X4140712Y3235640D01*
+Y3235183D01*
+X4140750Y3234840D01*
+Y3234650D01*
+Y3234573D01*
+X4140712Y3233469D01*
+X4140598Y3232441D01*
+X4140445Y3231451D01*
+X4140255Y3230538D01*
+X4139988Y3229700D01*
+X4139722Y3228900D01*
+X4139417Y3228177D01*
+X4139113Y3227530D01*
+X4138808Y3226959D01*
+X4138503Y3226464D01*
+X4138237Y3226045D01*
+X4137971Y3225702D01*
+X4137780Y3225398D01*
+X4137628Y3225207D01*
+X4137514Y3225093D01*
+X4137476Y3225055D01*
+X4136828Y3224445D01*
+X4136181Y3223913D01*
+X4135496Y3223456D01*
+X4134772Y3223037D01*
+X4134087Y3222732D01*
+X4133401Y3222428D01*
+X4132716Y3222199D01*
+X4132069Y3222009D01*
+X4131460Y3221895D01*
+X4130889Y3221780D01*
+X4130394Y3221704D01*
+X4129937Y3221628D01*
+X4129594D01*
+X4129327Y3221590D01*
+X4129099D01*
+X4128338Y3221628D01*
+X4127614Y3221666D01*
+X4126929Y3221780D01*
+X4126320Y3221895D01*
+X4125710Y3222047D01*
+X4125139Y3222237D01*
+X4124644Y3222428D01*
+X4124149Y3222618D01*
+X4123730Y3222770D01*
+X4123388Y3222961D01*
+X4123045Y3223151D01*
+X4122817Y3223304D01*
+X4122588Y3223418D01*
+X4122436Y3223532D01*
+X4122360Y3223570D01*
+X4122322Y3223608D01*
+X4121827Y3224027D01*
+X4121370Y3224484D01*
+X4120570Y3225474D01*
+X4119885Y3226501D01*
+X4119352Y3227530D01*
+X4119162Y3227986D01*
+X4118971Y3228444D01*
+X4118781Y3228862D01*
+X4118667Y3229205D01*
+X4118553Y3229471D01*
+X4118476Y3229700D01*
+X4118438Y3229852D01*
+Y3229890D01*
+X4123464Y3231451D01*
+X4123730Y3230461D01*
+X4124073Y3229586D01*
+X4124416Y3228900D01*
+X4124759Y3228291D01*
+X4125101Y3227872D01*
+X4125368Y3227568D01*
+X4125520Y3227377D01*
+X4125596Y3227301D01*
+X4126167Y3226882D01*
+X4126776Y3226540D01*
+X4127386Y3226311D01*
+X4127919Y3226159D01*
+X4128414Y3226083D01*
+X4128795Y3226045D01*
+X4128947Y3226007D01*
+X4129137D01*
+X4129670Y3226045D01*
+X4130127Y3226083D01*
+X4131041Y3226311D01*
+X4131802Y3226654D01*
+X4132488Y3227035D01*
+X4133021Y3227415D01*
+X4133401Y3227758D01*
+X4133516Y3227872D01*
+X4133630Y3227986D01*
+X4133668Y3228025D01*
+X4133706Y3228063D01*
+X4134011Y3228481D01*
+X4134277Y3228938D01*
+X4134506Y3229471D01*
+X4134696Y3230005D01*
+X4135001Y3231147D01*
+X4135191Y3232289D01*
+X4135267Y3232822D01*
+X4135343Y3233317D01*
+X4135381Y3233774D01*
+Y3234155D01*
+X4135420Y3234497D01*
+Y3234726D01*
+Y3234916D01*
+Y3234954D01*
+X4135381Y3235792D01*
+X4135343Y3236553D01*
+X4135267Y3237277D01*
+X4135153Y3237924D01*
+X4135001Y3238533D01*
+X4134848Y3239066D01*
+X4134696Y3239561D01*
+X4134544Y3239980D01*
+X4134391Y3240361D01*
+X4134239Y3240703D01*
+X4134087Y3240970D01*
+X4133935Y3241198D01*
+X4133820Y3241351D01*
+X4133744Y3241465D01*
+X4133668Y3241541D01*
+Y3241579D01*
+X4133326Y3241960D01*
+X4132945Y3242264D01*
+X4132564Y3242531D01*
+X4132183Y3242759D01*
+X4131422Y3243140D01*
+X4130660Y3243369D01*
+X4130013Y3243521D01*
+X4129746Y3243559D01*
+X4129480Y3243597D01*
+X4129290Y3243635D01*
+X4129023D01*
+X4128300Y3243597D01*
+X4127614Y3243445D01*
+X4127005Y3243254D01*
+X4126510Y3243064D01*
+X4126091Y3242836D01*
+X4125787Y3242645D01*
+X4125596Y3242493D01*
+X4125520Y3242455D01*
+X4125025Y3241998D01*
+X4124606Y3241503D01*
+X4124264Y3240970D01*
+X4124035Y3240475D01*
+X4123845Y3240018D01*
+X4123693Y3239676D01*
+X4123654Y3239523D01*
+Y3239409D01*
+X4123616Y3239371D01*
+Y3239333D01*
+X4118514Y3240551D01*
+X4118895Y3241617D01*
+X4119276Y3242569D01*
+X4119733Y3243369D01*
+X4120152Y3244054D01*
+X4120532Y3244549D01*
+X4120837Y3244930D01*
+X4121065Y3245158D01*
+X4121104Y3245234D01*
+X4121141D01*
+X4121713Y3245729D01*
+X4122322Y3246148D01*
+X4122931Y3246529D01*
+X4123578Y3246872D01*
+X4124225Y3247138D01*
+X4124835Y3247367D01*
+X4125482Y3247557D01*
+X4126053Y3247709D01*
+X4126624Y3247823D01*
+X4127157Y3247899D01*
+X4127614Y3247976D01*
+X4127995Y3248014D01*
+X4128338Y3248052D01*
+X4128795D01*
+X4129785Y3248014D01*
+D02*
+G37*
+G36*
+X3971775Y3222009D02*
+X3967358D01*
+X3959972Y3240589D01*
+X3965036D01*
+X3968539Y3231071D01*
+X3968729Y3230500D01*
+X3968919Y3230005D01*
+X3968957Y3229814D01*
+X3969034Y3229662D01*
+X3969071Y3229548D01*
+Y3229510D01*
+X3969109Y3229319D01*
+X3969186Y3229091D01*
+X3969376Y3228558D01*
+X3969452Y3228329D01*
+X3969490Y3228101D01*
+X3969567Y3227949D01*
+Y3227910D01*
+X3970594Y3231071D01*
+X3974097Y3240589D01*
+X3979237D01*
+X3971775Y3222009D01*
+D02*
+G37*
+G36*
+X3854886Y3248014D02*
+X3856104Y3247862D01*
+X3856637Y3247747D01*
+X3857132Y3247633D01*
+X3857589Y3247519D01*
+X3858008Y3247404D01*
+X3858389Y3247290D01*
+X3858731Y3247176D01*
+X3859036Y3247062D01*
+X3859265Y3246948D01*
+X3859455Y3246872D01*
+X3859607Y3246795D01*
+X3859683Y3246757D01*
+X3859721D01*
+X3860864Y3246072D01*
+X3861815Y3245310D01*
+X3862653Y3244511D01*
+X3863338Y3243749D01*
+X3863910Y3243026D01*
+X3864100Y3242721D01*
+X3864290Y3242493D01*
+X3864405Y3242264D01*
+X3864519Y3242112D01*
+X3864557Y3241998D01*
+X3864595Y3241960D01*
+X3864899Y3241389D01*
+X3865128Y3240780D01*
+X3865547Y3239561D01*
+X3865851Y3238381D01*
+X3866042Y3237277D01*
+X3866118Y3236782D01*
+X3866194Y3236325D01*
+X3866232Y3235906D01*
+Y3235563D01*
+X3866270Y3235259D01*
+Y3235068D01*
+Y3234916D01*
+Y3234878D01*
+X3866194Y3233546D01*
+X3866042Y3232289D01*
+X3865813Y3231109D01*
+X3865661Y3230576D01*
+X3865509Y3230119D01*
+X3865394Y3229662D01*
+X3865242Y3229243D01*
+X3865128Y3228900D01*
+X3865014Y3228634D01*
+X3864937Y3228367D01*
+X3864861Y3228215D01*
+X3864785Y3228101D01*
+Y3228063D01*
+X3864176Y3226959D01*
+X3863452Y3226007D01*
+X3862729Y3225169D01*
+X3862006Y3224484D01*
+X3861359Y3223951D01*
+X3861054Y3223760D01*
+X3860826Y3223570D01*
+X3860597Y3223456D01*
+X3860445Y3223341D01*
+X3860369Y3223304D01*
+X3860331Y3223265D01*
+X3859760Y3222961D01*
+X3859150Y3222732D01*
+X3857970Y3222314D01*
+X3856790Y3222009D01*
+X3855685Y3221819D01*
+X3855190Y3221742D01*
+X3854734Y3221666D01*
+X3854315Y3221628D01*
+X3853972D01*
+X3853667Y3221590D01*
+X3853287D01*
+X3852106Y3221628D01*
+X3850964Y3221780D01*
+X3849936Y3221971D01*
+X3848984Y3222199D01*
+X3848565Y3222275D01*
+X3848185Y3222390D01*
+X3847842Y3222504D01*
+X3847575Y3222580D01*
+X3847347Y3222656D01*
+X3847195Y3222732D01*
+X3847080Y3222770D01*
+X3847043D01*
+X3845938Y3223227D01*
+X3844986Y3223722D01*
+X3844187Y3224179D01*
+X3843540Y3224598D01*
+X3843007Y3224979D01*
+X3842626Y3225283D01*
+X3842397Y3225474D01*
+X3842321Y3225550D01*
+Y3235754D01*
+X3853477D01*
+Y3231413D01*
+X3847538D01*
+Y3228177D01*
+X3847994Y3227834D01*
+X3848489Y3227568D01*
+X3848946Y3227301D01*
+X3849403Y3227073D01*
+X3849784Y3226882D01*
+X3850089Y3226730D01*
+X3850279Y3226654D01*
+X3850317Y3226616D01*
+X3850355D01*
+X3850964Y3226425D01*
+X3851573Y3226273D01*
+X3852106Y3226159D01*
+X3852601Y3226083D01*
+X3853020Y3226045D01*
+X3853363Y3226007D01*
+X3853629D01*
+X3854239Y3226045D01*
+X3854810Y3226121D01*
+X3855343Y3226197D01*
+X3855838Y3226349D01*
+X3856751Y3226730D01*
+X3857132Y3226920D01*
+X3857513Y3227149D01*
+X3857818Y3227339D01*
+X3858122Y3227530D01*
+X3858351Y3227720D01*
+X3858541Y3227910D01*
+X3858731Y3228063D01*
+X3858846Y3228139D01*
+X3858884Y3228215D01*
+X3858922Y3228253D01*
+X3859265Y3228710D01*
+X3859569Y3229205D01*
+X3859874Y3229738D01*
+X3860102Y3230271D01*
+X3860445Y3231413D01*
+X3860673Y3232556D01*
+X3860787Y3233051D01*
+X3860826Y3233546D01*
+X3860864Y3233964D01*
+X3860901Y3234345D01*
+X3860940Y3234688D01*
+Y3234916D01*
+Y3235068D01*
+Y3235107D01*
+X3860901Y3235868D01*
+X3860864Y3236591D01*
+X3860749Y3237277D01*
+X3860635Y3237886D01*
+X3860483Y3238457D01*
+X3860331Y3238990D01*
+X3860140Y3239447D01*
+X3859950Y3239866D01*
+X3859760Y3240247D01*
+X3859569Y3240551D01*
+X3859417Y3240856D01*
+X3859265Y3241084D01*
+X3859150Y3241237D01*
+X3859036Y3241351D01*
+X3858998Y3241427D01*
+X3858960Y3241465D01*
+X3858579Y3241846D01*
+X3858160Y3242188D01*
+X3857741Y3242455D01*
+X3857285Y3242721D01*
+X3856828Y3242950D01*
+X3856409Y3243102D01*
+X3855533Y3243369D01*
+X3854772Y3243521D01*
+X3854429Y3243559D01*
+X3854162Y3243597D01*
+X3853934Y3243635D01*
+X3853591D01*
+X3852792Y3243597D01*
+X3852068Y3243483D01*
+X3851421Y3243293D01*
+X3850888Y3243102D01*
+X3850431Y3242874D01*
+X3850127Y3242721D01*
+X3849936Y3242569D01*
+X3849860Y3242531D01*
+X3849327Y3242074D01*
+X3848908Y3241617D01*
+X3848565Y3241122D01*
+X3848261Y3240627D01*
+X3848070Y3240208D01*
+X3847918Y3239866D01*
+X3847842Y3239637D01*
+X3847804Y3239599D01*
+Y3239561D01*
+X3842664Y3240513D01*
+X3842816Y3241160D01*
+X3843045Y3241770D01*
+X3843540Y3242874D01*
+X3843806Y3243331D01*
+X3844111Y3243788D01*
+X3844415Y3244206D01*
+X3844682Y3244587D01*
+X3844986Y3244930D01*
+X3845253Y3245196D01*
+X3845481Y3245463D01*
+X3845710Y3245653D01*
+X3845862Y3245844D01*
+X3846014Y3245958D01*
+X3846091Y3245996D01*
+X3846129Y3246034D01*
+X3846662Y3246377D01*
+X3847195Y3246719D01*
+X3847804Y3246986D01*
+X3848413Y3247214D01*
+X3849669Y3247557D01*
+X3850850Y3247785D01*
+X3851421Y3247899D01*
+X3851916Y3247938D01*
+X3852411Y3247976D01*
+X3852792Y3248014D01*
+X3853134Y3248052D01*
+X3853591D01*
+X3854886Y3248014D01*
+D02*
+G37*
+G36*
+X3908038Y3240932D02*
+X3908761Y3240856D01*
+X3909409Y3240742D01*
+X3910056Y3240551D01*
+X3910627Y3240361D01*
+X3911198Y3240170D01*
+X3911693Y3239904D01*
+X3912112Y3239676D01*
+X3912531Y3239447D01*
+X3912874Y3239219D01*
+X3913178Y3238990D01*
+X3913406Y3238800D01*
+X3913597Y3238609D01*
+X3913749Y3238495D01*
+X3913825Y3238419D01*
+X3913864Y3238381D01*
+X3914282Y3237886D01*
+X3914663Y3237353D01*
+X3914968Y3236782D01*
+X3915234Y3236211D01*
+X3915463Y3235602D01*
+X3915691Y3234992D01*
+X3915958Y3233850D01*
+X3916072Y3233317D01*
+X3916148Y3232860D01*
+X3916186Y3232403D01*
+X3916224Y3232022D01*
+X3916262Y3231718D01*
+Y3231451D01*
+Y3231299D01*
+Y3231261D01*
+X3916224Y3230423D01*
+X3916148Y3229662D01*
+X3916034Y3228900D01*
+X3915881Y3228215D01*
+X3915691Y3227568D01*
+X3915500Y3226996D01*
+X3915272Y3226464D01*
+X3915044Y3226007D01*
+X3914853Y3225550D01*
+X3914625Y3225207D01*
+X3914435Y3224865D01*
+X3914244Y3224598D01*
+X3914092Y3224407D01*
+X3913978Y3224255D01*
+X3913901Y3224179D01*
+X3913864Y3224141D01*
+X3913406Y3223684D01*
+X3912874Y3223304D01*
+X3912340Y3222961D01*
+X3911807Y3222656D01*
+X3911274Y3222428D01*
+X3910741Y3222199D01*
+X3909675Y3221895D01*
+X3909218Y3221819D01*
+X3908761Y3221742D01*
+X3908381Y3221666D01*
+X3908038Y3221628D01*
+X3907733Y3221590D01*
+X3907353D01*
+X3906705Y3221628D01*
+X3906096Y3221666D01*
+X3904954Y3221856D01*
+X3904459Y3221971D01*
+X3903964Y3222123D01*
+X3903545Y3222275D01*
+X3903164Y3222428D01*
+X3902822Y3222580D01*
+X3902517Y3222732D01*
+X3902251Y3222885D01*
+X3902022Y3222999D01*
+X3901870Y3223113D01*
+X3901756Y3223189D01*
+X3901679Y3223265D01*
+X3901642D01*
+X3901261Y3223608D01*
+X3900918Y3223951D01*
+X3900271Y3224750D01*
+X3899776Y3225588D01*
+X3899395Y3226425D01*
+X3899090Y3227149D01*
+X3898976Y3227454D01*
+X3898900Y3227758D01*
+X3898824Y3227986D01*
+X3898786Y3228139D01*
+X3898748Y3228253D01*
+Y3228291D01*
+X3903583Y3229129D01*
+X3903735Y3228444D01*
+X3903926Y3227872D01*
+X3904154Y3227377D01*
+X3904383Y3226996D01*
+X3904573Y3226692D01*
+X3904726Y3226501D01*
+X3904840Y3226387D01*
+X3904878Y3226349D01*
+X3905220Y3226083D01*
+X3905601Y3225893D01*
+X3905982Y3225778D01*
+X3906363Y3225702D01*
+X3906667Y3225626D01*
+X3906934Y3225588D01*
+X3907162D01*
+X3907809Y3225664D01*
+X3908419Y3225816D01*
+X3908914Y3226007D01*
+X3909333Y3226273D01*
+X3909675Y3226501D01*
+X3909942Y3226730D01*
+X3910094Y3226882D01*
+X3910132Y3226920D01*
+X3910322Y3227187D01*
+X3910513Y3227530D01*
+X3910779Y3228215D01*
+X3910970Y3229015D01*
+X3911084Y3229776D01*
+X3911160Y3230500D01*
+X3911198Y3230804D01*
+X3911236Y3231071D01*
+Y3231299D01*
+Y3231451D01*
+Y3231566D01*
+Y3231604D01*
+Y3232137D01*
+X3911198Y3232632D01*
+X3911122Y3233089D01*
+X3911084Y3233507D01*
+X3910894Y3234231D01*
+X3910703Y3234840D01*
+X3910513Y3235259D01*
+X3910322Y3235602D01*
+X3910208Y3235754D01*
+X3910170Y3235830D01*
+X3909713Y3236249D01*
+X3909256Y3236591D01*
+X3908761Y3236820D01*
+X3908266Y3236972D01*
+X3907848Y3237048D01*
+X3907505Y3237125D01*
+X3907200D01*
+X3906705Y3237086D01*
+X3906287Y3237010D01*
+X3905868Y3236896D01*
+X3905563Y3236744D01*
+X3905297Y3236591D01*
+X3905106Y3236477D01*
+X3904992Y3236401D01*
+X3904954Y3236363D01*
+X3904649Y3236058D01*
+X3904421Y3235716D01*
+X3904193Y3235373D01*
+X3904040Y3235031D01*
+X3903926Y3234726D01*
+X3903850Y3234459D01*
+X3903812Y3234307D01*
+Y3234231D01*
+X3898976Y3235107D01*
+X3899357Y3236135D01*
+X3899814Y3237010D01*
+X3900271Y3237772D01*
+X3900766Y3238381D01*
+X3901184Y3238876D01*
+X3901527Y3239219D01*
+X3901794Y3239409D01*
+X3901832Y3239485D01*
+X3901870D01*
+X3902669Y3239980D01*
+X3903583Y3240361D01*
+X3904459Y3240627D01*
+X3905335Y3240780D01*
+X3906096Y3240894D01*
+X3906439Y3240932D01*
+X3906705D01*
+X3906934Y3240970D01*
+X3907277D01*
+X3908038Y3240932D01*
+D02*
+G37*
+G36*
+X4058128Y3244283D02*
+Y3240589D01*
+X4060374D01*
+Y3236667D01*
+X4058128D01*
+Y3228558D01*
+Y3228101D01*
+Y3227644D01*
+Y3227263D01*
+X4058090Y3226920D01*
+Y3226311D01*
+X4058052Y3225854D01*
+X4058014Y3225512D01*
+Y3225283D01*
+X4057976Y3225131D01*
+Y3225093D01*
+X4057899Y3224674D01*
+X4057785Y3224293D01*
+X4057671Y3223951D01*
+X4057557Y3223684D01*
+X4057443Y3223456D01*
+X4057367Y3223304D01*
+X4057328Y3223189D01*
+X4057290Y3223151D01*
+X4057062Y3222923D01*
+X4056833Y3222694D01*
+X4056339Y3222314D01*
+X4056110Y3222199D01*
+X4055920Y3222085D01*
+X4055768Y3222047D01*
+X4055729Y3222009D01*
+X4055310Y3221856D01*
+X4054892Y3221780D01*
+X4054511Y3221704D01*
+X4054130Y3221628D01*
+X4053826D01*
+X4053559Y3221590D01*
+X4053331D01*
+X4052531Y3221628D01*
+X4051808Y3221704D01*
+X4051160Y3221819D01*
+X4050589Y3221971D01*
+X4050094Y3222085D01*
+X4049752Y3222199D01*
+X4049523Y3222275D01*
+X4049447Y3222314D01*
+X4049904Y3226121D01*
+X4050361Y3225969D01*
+X4050742Y3225854D01*
+X4051084Y3225778D01*
+X4051389Y3225740D01*
+X4051579Y3225702D01*
+X4051770Y3225664D01*
+X4051884D01*
+X4052227Y3225702D01*
+X4052493Y3225778D01*
+X4052645Y3225854D01*
+X4052721Y3225893D01*
+X4052912Y3226083D01*
+X4053026Y3226273D01*
+X4053102Y3226425D01*
+X4053140Y3226501D01*
+Y3226578D01*
+X4053178Y3226730D01*
+Y3227073D01*
+Y3227530D01*
+X4053216Y3227986D01*
+Y3228444D01*
+Y3228824D01*
+Y3228938D01*
+Y3229053D01*
+Y3229129D01*
+Y3229167D01*
+Y3236667D01*
+X4049866D01*
+Y3240589D01*
+X4053216D01*
+Y3247176D01*
+X4058128Y3244283D01*
+D02*
+G37*
+%LPC*%
+G36*
+X4071416Y3237086D02*
+X4071340D01*
+X4070731Y3237010D01*
+X4070160Y3236858D01*
+X4069665Y3236630D01*
+X4069246Y3236363D01*
+X4068903Y3236096D01*
+X4068675Y3235868D01*
+X4068484Y3235716D01*
+X4068446Y3235640D01*
+X4068065Y3235068D01*
+X4067761Y3234383D01*
+X4067570Y3233660D01*
+X4067418Y3232974D01*
+X4067342Y3232327D01*
+X4067304Y3232061D01*
+X4067266Y3231794D01*
+Y3231604D01*
+Y3231451D01*
+Y3231375D01*
+Y3231337D01*
+Y3230766D01*
+X4067304Y3230233D01*
+X4067380Y3229776D01*
+X4067456Y3229319D01*
+X4067532Y3228900D01*
+X4067609Y3228558D01*
+X4067837Y3227910D01*
+X4068027Y3227454D01*
+X4068218Y3227111D01*
+X4068370Y3226920D01*
+X4068408Y3226844D01*
+X4068865Y3226387D01*
+X4069322Y3226045D01*
+X4069817Y3225816D01*
+X4070274Y3225664D01*
+X4070655Y3225550D01*
+X4070959Y3225512D01*
+X4071188Y3225474D01*
+X4071264D01*
+X4071911Y3225550D01*
+X4072482Y3225702D01*
+X4073015Y3225930D01*
+X4073434Y3226235D01*
+X4073777Y3226501D01*
+X4074043Y3226730D01*
+X4074234Y3226882D01*
+X4074272Y3226959D01*
+X4074500Y3227263D01*
+X4074691Y3227568D01*
+X4074957Y3228291D01*
+X4075186Y3229053D01*
+X4075338Y3229814D01*
+X4075414Y3230500D01*
+X4075452Y3230804D01*
+Y3231071D01*
+X4075490Y3231261D01*
+Y3231413D01*
+Y3231527D01*
+Y3231566D01*
+X4075452Y3232517D01*
+X4075300Y3233355D01*
+X4075109Y3234078D01*
+X4074881Y3234650D01*
+X4074691Y3235107D01*
+X4074500Y3235411D01*
+X4074348Y3235602D01*
+X4074310Y3235677D01*
+X4073853Y3236135D01*
+X4073358Y3236477D01*
+X4072863Y3236744D01*
+X4072368Y3236896D01*
+X4071949Y3237010D01*
+X4071645Y3237048D01*
+X4071416Y3237086D01*
+D02*
+G37*
+G36*
+X3990774Y3237201D02*
+X3990698D01*
+X3990051Y3237125D01*
+X3989518Y3236972D01*
+X3989023Y3236744D01*
+X3988604Y3236515D01*
+X3988261Y3236249D01*
+X3987995Y3236020D01*
+X3987842Y3235868D01*
+X3987804Y3235792D01*
+X3987614Y3235525D01*
+X3987423Y3235183D01*
+X3987119Y3234497D01*
+X3986928Y3233698D01*
+X3986776Y3232974D01*
+X3986700Y3232289D01*
+X3986662Y3231984D01*
+X3986624Y3231718D01*
+Y3231489D01*
+Y3231337D01*
+Y3231223D01*
+Y3231185D01*
+X3986662Y3230195D01*
+X3986814Y3229319D01*
+X3987005Y3228558D01*
+X3987195Y3227949D01*
+X3987423Y3227491D01*
+X3987614Y3227149D01*
+X3987766Y3226959D01*
+X3987804Y3226882D01*
+X3988261Y3226425D01*
+X3988756Y3226083D01*
+X3989251Y3225816D01*
+X3989708Y3225664D01*
+X3990089Y3225550D01*
+X3990393Y3225512D01*
+X3990622Y3225474D01*
+X3990698D01*
+X3991079Y3225512D01*
+X3991421Y3225550D01*
+X3992107Y3225778D01*
+X3992640Y3226083D01*
+X3993135Y3226425D01*
+X3993477Y3226768D01*
+X3993744Y3227073D01*
+X3993934Y3227301D01*
+X3993972Y3227339D01*
+Y3227377D01*
+X3994239Y3227949D01*
+X3994429Y3228596D01*
+X3994582Y3229319D01*
+X3994658Y3230005D01*
+X3994734Y3230652D01*
+Y3230918D01*
+X3994772Y3231147D01*
+Y3231375D01*
+Y3231527D01*
+Y3231604D01*
+Y3231642D01*
+X3994734Y3232632D01*
+X3994582Y3233469D01*
+X3994391Y3234193D01*
+X3994201Y3234764D01*
+X3993972Y3235221D01*
+X3993820Y3235525D01*
+X3993668Y3235716D01*
+X3993630Y3235792D01*
+X3993173Y3236249D01*
+X3992678Y3236591D01*
+X3992183Y3236858D01*
+X3991726Y3237010D01*
+X3991307Y3237125D01*
+X3991003Y3237162D01*
+X3990774Y3237201D01*
+D02*
+G37*
+G36*
+X4027864Y3275192D02*
+X4027598D01*
+X4027065Y3275154D01*
+X4026570Y3275002D01*
+X4026151Y3274849D01*
+X4025770Y3274621D01*
+X4025504Y3274430D01*
+X4025275Y3274240D01*
+X4025123Y3274088D01*
+X4025085Y3274049D01*
+X4024742Y3273593D01*
+X4024438Y3273098D01*
+X4024247Y3272565D01*
+X4024095Y3272032D01*
+X4024019Y3271575D01*
+X4023981Y3271194D01*
+X4023943Y3271042D01*
+Y3270927D01*
+Y3270889D01*
+Y3270851D01*
+X4031291D01*
+X4031253Y3271575D01*
+X4031139Y3272184D01*
+X4030987Y3272717D01*
+X4030796Y3273174D01*
+X4030606Y3273517D01*
+X4030416Y3273783D01*
+X4030301Y3273973D01*
+X4030263Y3274012D01*
+X4029844Y3274392D01*
+X4029425Y3274697D01*
+X4028969Y3274887D01*
+X4028550Y3275039D01*
+X4028169Y3275116D01*
+X4027864Y3275192D01*
+D02*
+G37*
+G36*
+X3695284Y2386204D02*
+X3695075D01*
+X3694675Y2386185D01*
+X3694295Y2386166D01*
+X3693952Y2386109D01*
+X3693629Y2386052D01*
+X3693325Y2385976D01*
+X3693058Y2385900D01*
+X3692811Y2385805D01*
+X3692582Y2385710D01*
+X3692392Y2385634D01*
+X3692221Y2385538D01*
+X3692088Y2385462D01*
+X3691974Y2385386D01*
+X3691879Y2385329D01*
+X3691822Y2385272D01*
+X3691783Y2385253D01*
+X3691765Y2385234D01*
+X3691574Y2385044D01*
+X3691403Y2384854D01*
+X3691251Y2384644D01*
+X3691118Y2384416D01*
+X3691023Y2384207D01*
+X3690927Y2383997D01*
+X3690794Y2383579D01*
+X3690718Y2383217D01*
+X3690699Y2383065D01*
+X3690680Y2382932D01*
+X3690661Y2382818D01*
+Y2382742D01*
+Y2382685D01*
+Y2382666D01*
+X3690680Y2382380D01*
+X3690699Y2382095D01*
+X3690756Y2381829D01*
+X3690832Y2381581D01*
+X3691003Y2381144D01*
+X3691194Y2380782D01*
+X3691308Y2380630D01*
+X3691403Y2380497D01*
+X3691498Y2380364D01*
+X3691574Y2380269D01*
+X3691650Y2380193D01*
+X3691707Y2380135D01*
+X3691726Y2380116D01*
+X3691745Y2380097D01*
+X3691955Y2379926D01*
+X3692202Y2379774D01*
+X3692449Y2379641D01*
+X3692716Y2379527D01*
+X3693268Y2379355D01*
+X3693800Y2379241D01*
+X3694048Y2379203D01*
+X3694276Y2379184D01*
+X3694485Y2379165D01*
+X3694675Y2379146D01*
+X3694827Y2379127D01*
+X3695037D01*
+X3695436Y2379146D01*
+X3695817Y2379165D01*
+X3696178Y2379222D01*
+X3696501Y2379279D01*
+X3696787Y2379355D01*
+X3697072Y2379451D01*
+X3697320Y2379546D01*
+X3697529Y2379622D01*
+X3697738Y2379717D01*
+X3697890Y2379812D01*
+X3698043Y2379907D01*
+X3698157Y2379983D01*
+X3698252Y2380040D01*
+X3698309Y2380097D01*
+X3698347Y2380116D01*
+X3698366Y2380135D01*
+X3698556Y2380326D01*
+X3698727Y2380535D01*
+X3698880Y2380744D01*
+X3698994Y2380954D01*
+X3699108Y2381163D01*
+X3699203Y2381372D01*
+X3699336Y2381772D01*
+X3699413Y2382133D01*
+X3699431Y2382285D01*
+X3699450Y2382399D01*
+X3699469Y2382513D01*
+Y2382590D01*
+Y2382647D01*
+Y2382666D01*
+X3699450Y2382951D01*
+X3699413Y2383217D01*
+X3699374Y2383465D01*
+X3699298Y2383712D01*
+X3699127Y2384150D01*
+X3698918Y2384511D01*
+X3698823Y2384682D01*
+X3698708Y2384816D01*
+X3698613Y2384930D01*
+X3698537Y2385025D01*
+X3698461Y2385120D01*
+X3698404Y2385177D01*
+X3698385Y2385196D01*
+X3698366Y2385215D01*
+X3698138Y2385386D01*
+X3697910Y2385538D01*
+X3697643Y2385672D01*
+X3697377Y2385786D01*
+X3696825Y2385957D01*
+X3696292Y2386071D01*
+X3696045Y2386128D01*
+X3695817Y2386147D01*
+X3695607Y2386166D01*
+X3695436Y2386185D01*
+X3695284Y2386204D01*
+D02*
+G37*
+G36*
+X3946722Y3230880D02*
+X3946684D01*
+Y3229890D01*
+Y3229281D01*
+X3946722Y3228786D01*
+X3946760Y3228367D01*
+X3946798Y3228063D01*
+X3946836Y3227834D01*
+X3946874Y3227644D01*
+X3946912Y3227568D01*
+Y3227530D01*
+X3947026Y3227187D01*
+X3947217Y3226882D01*
+X3947407Y3226578D01*
+X3947597Y3226349D01*
+X3947750Y3226159D01*
+X3947902Y3226007D01*
+X3948016Y3225930D01*
+X3948055Y3225893D01*
+X3948511Y3225626D01*
+X3948968Y3225398D01*
+X3949387Y3225245D01*
+X3949768Y3225169D01*
+X3950110Y3225093D01*
+X3950377Y3225055D01*
+X3950605D01*
+X3951024Y3225093D01*
+X3951405Y3225169D01*
+X3951748Y3225283D01*
+X3952014Y3225435D01*
+X3952243Y3225550D01*
+X3952395Y3225664D01*
+X3952509Y3225740D01*
+X3952547Y3225778D01*
+X3952814Y3226083D01*
+X3953004Y3226387D01*
+X3953118Y3226692D01*
+X3953194Y3226959D01*
+X3953271Y3227187D01*
+X3953309Y3227415D01*
+Y3227530D01*
+Y3227568D01*
+X3953271Y3227949D01*
+X3953156Y3228253D01*
+X3953004Y3228558D01*
+X3952814Y3228824D01*
+X3952661Y3229015D01*
+X3952509Y3229167D01*
+X3952395Y3229243D01*
+X3952357Y3229281D01*
+X3952052Y3229433D01*
+X3951671Y3229586D01*
+X3951253Y3229738D01*
+X3950796Y3229852D01*
+X3950377Y3229966D01*
+X3950034Y3230043D01*
+X3949768Y3230119D01*
+X3949691D01*
+X3948968Y3230271D01*
+X3948359Y3230423D01*
+X3947826Y3230538D01*
+X3947407Y3230652D01*
+X3947102Y3230766D01*
+X3946874Y3230804D01*
+X3946722Y3230880D01*
+D02*
+G37*
+G36*
+X3699298Y2434413D02*
+X3695874D01*
+Y2432339D01*
+Y2432016D01*
+Y2431730D01*
+X3695893Y2431464D01*
+X3695912Y2431236D01*
+Y2431026D01*
+X3695931Y2430836D01*
+X3695950Y2430665D01*
+X3695969Y2430532D01*
+X3695988Y2430399D01*
+X3696007Y2430303D01*
+X3696026Y2430151D01*
+X3696064Y2430056D01*
+Y2430037D01*
+X3696140Y2429847D01*
+X3696235Y2429675D01*
+X3696330Y2429542D01*
+X3696425Y2429428D01*
+X3696521Y2429333D01*
+X3696597Y2429276D01*
+X3696635Y2429238D01*
+X3696654Y2429219D01*
+X3696806Y2429124D01*
+X3696977Y2429048D01*
+X3697130Y2429010D01*
+X3697281Y2428972D01*
+X3697415Y2428953D01*
+X3697529Y2428934D01*
+X3697624D01*
+X3697871Y2428953D01*
+X3698081Y2428991D01*
+X3698271Y2429048D01*
+X3698423Y2429124D01*
+X3698556Y2429200D01*
+X3698651Y2429257D01*
+X3698708Y2429295D01*
+X3698727Y2429314D01*
+X3698860Y2429466D01*
+X3698975Y2429619D01*
+X3699051Y2429771D01*
+X3699127Y2429923D01*
+X3699165Y2430037D01*
+X3699203Y2430151D01*
+X3699222Y2430227D01*
+Y2430246D01*
+X3699241Y2430322D01*
+Y2430437D01*
+X3699260Y2430684D01*
+X3699279Y2430969D01*
+Y2431274D01*
+X3699298Y2431559D01*
+Y2431787D01*
+Y2431882D01*
+Y2431958D01*
+Y2431996D01*
+Y2432016D01*
+Y2434413D01*
+D02*
+G37*
+G36*
+X3693743D02*
+X3690794D01*
+Y2432929D01*
+Y2432605D01*
+Y2432301D01*
+Y2432054D01*
+Y2431806D01*
+X3690813Y2431616D01*
+Y2431426D01*
+Y2431274D01*
+Y2431140D01*
+X3690832Y2431026D01*
+Y2430931D01*
+Y2430817D01*
+X3690851Y2430741D01*
+Y2430722D01*
+X3690889Y2430494D01*
+X3690946Y2430303D01*
+X3691023Y2430132D01*
+X3691099Y2429999D01*
+X3691175Y2429885D01*
+X3691251Y2429809D01*
+X3691289Y2429771D01*
+X3691308Y2429752D01*
+X3691460Y2429637D01*
+X3691612Y2429561D01*
+X3691765Y2429485D01*
+X3691917Y2429447D01*
+X3692050Y2429428D01*
+X3692164Y2429409D01*
+X3692259D01*
+X3692468Y2429428D01*
+X3692678Y2429466D01*
+X3692830Y2429523D01*
+X3692982Y2429599D01*
+X3693096Y2429675D01*
+X3693172Y2429733D01*
+X3693229Y2429771D01*
+X3693248Y2429790D01*
+X3693382Y2429942D01*
+X3693477Y2430113D01*
+X3693553Y2430284D01*
+X3693610Y2430455D01*
+X3693667Y2430608D01*
+X3693686Y2430722D01*
+X3693705Y2430798D01*
+Y2430836D01*
+Y2430912D01*
+X3693724Y2431026D01*
+Y2431293D01*
+Y2431597D01*
+X3693743Y2431920D01*
+Y2432225D01*
+Y2432358D01*
+Y2432472D01*
+Y2432586D01*
+Y2432662D01*
+Y2432700D01*
+Y2432720D01*
+Y2434413D01*
+D02*
+G37*
+G36*
+X3695284Y2421951D02*
+X3695075D01*
+X3694675Y2421933D01*
+X3694295Y2421913D01*
+X3693952Y2421856D01*
+X3693629Y2421799D01*
+X3693325Y2421723D01*
+X3693058Y2421647D01*
+X3692811Y2421552D01*
+X3692582Y2421457D01*
+X3692392Y2421381D01*
+X3692221Y2421286D01*
+X3692088Y2421210D01*
+X3691974Y2421134D01*
+X3691879Y2421076D01*
+X3691822Y2421019D01*
+X3691783Y2421000D01*
+X3691765Y2420981D01*
+X3691574Y2420791D01*
+X3691403Y2420601D01*
+X3691251Y2420392D01*
+X3691118Y2420163D01*
+X3691023Y2419954D01*
+X3690927Y2419745D01*
+X3690794Y2419326D01*
+X3690718Y2418965D01*
+X3690699Y2418813D01*
+X3690680Y2418679D01*
+X3690661Y2418565D01*
+Y2418489D01*
+Y2418432D01*
+Y2418413D01*
+X3690680Y2418128D01*
+X3690699Y2417842D01*
+X3690756Y2417576D01*
+X3690832Y2417329D01*
+X3691003Y2416891D01*
+X3691194Y2416530D01*
+X3691308Y2416377D01*
+X3691403Y2416244D01*
+X3691498Y2416111D01*
+X3691574Y2416016D01*
+X3691650Y241Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.