text:
// Copyright 2013 Robert A. Uhl.  All rights reserved.
// Use of this source code is governed by an MIT-style license which may
// be found in the LICENSE file.

package spki

import (
	"bytes"
	"crypto/ecdsa"
	"crypto/elliptic"
	"fmt"
	"github.com/eadmund/sexprs"
)

type PublicKey struct {
	HashKey
	Pk ecdsa.PublicKey
}

// EvalPublicKey converts the S-expression s to a PublicKey, or returns
// an error.  The format of a 256-bit ECDSA public key is:
//    (public-key (ecdsa-sha2 (curve p256) (x |...|) (y |...|)))
// The format of a 384-bit ECDSA public key is:
//    (public-key (ecdsa-sha2 (curve p384) (x |...|) (y |...|)))
// Neither RSA, DSA, NIST curves other than p256 & p384 nor non-NIST-curve
// ECDSA keys are supported at this point in time.  In the future PublicKey
// will likely be an interface.
func EvalPublicKey(s sexprs.Sexp) (k *PublicKey, err error) {
	l, ok := s.(sexprs.List)
	if !ok {
		return nil, fmt.Errorf("Key S-expression must be a list")
	}
	if !publicKeyAtom.Equal(l[0]) {
		return nil, fmt.Errorf("Key S-expression must start with 'public-key'")
	}
	if len(l) != 2 {
		return nil, fmt.Errorf("Key S-expression must have two elements")
	}
	return evalECDSAPublicKey(l[1])
}

func evalECDSAPublicKey(s sexprs.Sexp) (k *PublicKey, err error) {
	l, ok := s.(sexprs.List)
	if !ok {
		return nil, fmt.Errorf("ECDSA key S-expression must be a list")
	}
	if len(l) != 4 {
		return nil, fmt.Errorf("ECDSA key must have 4 elements")
	}
	switch {
	case ecdsa256Atom.Equal(l[0]):
		k, err = evalECDSA256PublicKeyTerms(l)
		if err != nil {
			return nil, err
		}
		return k, nil
	case ecdsa384Atom.Equal(l[0]):
		panic("p384 not yet supported")
	default:
		return nil, fmt.Errorf("ECDSA key S-expression must start with 'ecdsa-sha2'")
	}
	panic("Can't reach here")
}

func evalECDSA256PublicKeyTerms(l sexprs.List) (k *PublicKey, err error) {
	k = new(PublicKey)
	curve, err := evalCurve(l[1])
	if err != nil {
		return nil, err
	}
	switch curve {
	case "p256":
		k.Pk.Curve = elliptic.P256()
	case "p384":
		k.Pk.Curve = elliptic.P384()
	default:
		return nil, fmt.Errorf("Curve must be either 'p256' or 'p384'")
	}
	k.Pk.X, err = evalNamedBigInt("x", l[2])
	if err != nil {
		return nil, err
	}
	k.Pk.Y, err = evalNamedBigInt("y", l[3])
	if err != nil {
		return nil, err
	}
	return k, nil
}

func evalCurve(l sexprs.Sexp) (curve string, err error) {
	ll, ok := l.(sexprs.List)
	if !ok {
		return curve, fmt.Errorf("Curve must be a list")
	}
	if c, ok := ll[0].(sexprs.Atom); !ok || !bytes.Equal(c.Value, []byte("curve")) {
		return curve, fmt.Errorf("Curve must start with 'curve'")
	}
	if c, ok := ll[1].(sexprs.Atom); !ok {
		return curve, fmt.Errorf("Curve must be either p256 or p512")
	} else {
		curve = string(c.Value)
		if curve != "p256" && curve != "p512" {
			return curve, fmt.Errorf("Curve must be either p256 or p512")
		}
		return curve, nil
	}
	panic("Can't get here")
}

func (k *PublicKey) Sexp() (s sexprs.Sexp) {
	var curve sexprs.Atom
	switch k.Pk.Curve {
	case elliptic.P256():
		curve.Value = []byte("p256")
	case elliptic.P384():
		curve.Value = []byte("p384")
	default:
		panic(fmt.Sprintf("Bad curve value %v", k.Pk.Curve))
	}
	return sexprs.List{
		sexprs.Atom{Value: []byte("public-key")},
		sexprs.List{
			sexprs.Atom{Value: []byte("ecdsa-sha2")},
			sexprs.List{
				sexprs.Atom{Value: []byte("curve")},
				curve,
			},
			sexprs.List{
				sexprs.Atom{Value: []byte("x")},
				sexprs.Atom{Value: k.Pk.X.Bytes()},
			},
			sexprs.List{
				sexprs.Atom{Value: []byte("y")},
				sexprs.Atom{Value: k.Pk.Y.Bytes()},
			},
		},
	}
}

func (k *PublicKey) Pack() ([]byte) {
	return k.Sexp().Pack()
}

// Key methods

// IsHash always returns false for a public key.
func (k *PublicKey) IsHash() bool {
	return false
}

// PublicKey returns the key itself.
func (k *PublicKey) PublicKey() *PublicKey {
	return k
}

func (k *PublicKey) HashExp(algorithm string) (hash Hash, err error) {
	hash, err = k.HashKey.HashExp(algorithm)
	if err != nil {
		return hash, nil
	}
	newHash, ok := KnownHashes[algorithm]
	if !ok {
		return hash, fmt.Errorf("Unknown hash algorithm %s", algorithm)
	}
	hasher := newHash()
	_, err = hasher.Write(k.Pack())
	if err != nil {
		return hash, err
	}
	hash.Algorithm = algorithm
	hash.Hash = hasher.Sum(nil)
	return hash, nil
}

func (k *PublicKey) Hashed(algorithm string) ([]byte, error) {
	hash, err := k.HashExp(algorithm)
	return hash.Hash, err
}

func (k *PublicKey) SignatureAlgorithm() string {
	return "ecdsa-sha2"
}

func (k *PublicKey) HashAlgorithm() string {
	switch k.Pk.Curve {
	case elliptic.P256():
		return "p256"
	case elliptic.P384():
		return "p384"
	default:
		return ""
	}
}

func (k *PublicKey) String() string {
	return k.Sexp().String()
}

func (k *PublicKey) Equal(k2 Key) bool {
	if k == nil {
		return false
	}
	for _, h := range k.Hashes {
		h2, err := k2.HashExp(h.Algorithm)
		if err != nil {
			continue
		}
		if h.Equal(h2) {
			return true
		}
	}
	return k.Sexp().Equal(k2.Sexp())
}

// Subject always returns the 'natural' hash of k, i.e. a hash with an
// appropriate length.
func (k *PublicKey) Subject() sexprs.Sexp {
	hash, err := k.HashExp(k.HashAlgorithm())
	if err != nil {
		return nil
	}
	return sexprs.List{sexprs.Atom{Value: []byte("subject")}, hash.Sexp()}
}

repository: eadmund/spki

repo_name: eadmund/spki


text:
# Defines the following variables:
#   - CONDUIT_FOUND
#   - CONDUIT_LIBRARIES
#   - CONDUIT_INCLUDE_DIRS
#

find_file(CONDUIT_CMAKE_FILE conduit.cmake
  HINTS ${LBANN_CONDUIT_DIR} ${CONDUIT_DIR} $ENV{CONDUIT_DIR}
  PATH_SUFFIXES lib/cmake lib/cmake/conduit
  NO_DEFAULT_PATH
  DOC "CONDUIT target file.")
find_file(CONDUIT_CMAKE_FILE conduit.cmake)

find_path(CONDUIT_INCLUDE_DIRS conduit/conduit_relay.h
  HINTS ${LBANN_CONDUIT_DIR} ${CONDUIT_DIR} $ENV{CONDUIT_DIR}
  PATH_SUFFIXES include
  NO_DEFAULT_PATH
  DOC "Directory with CONDUIT header.")
find_path(CONDUIT_INCLUDE_DIRS conduit/conduit_relay.h)

if (CONDUIT_CMAKE_FILE AND NOT TARGET conduit)
  include("${CONDUIT_CMAKE_FILE}")
endif ()

# Standard handling of the package arguments
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(CONDUIT
  DEFAULT_MSG CONDUIT_CMAKE_FILE)

# Setup the imported target
if (NOT TARGET CONDUIT::CONDUIT)
  add_library(CONDUIT::CONDUIT INTERFACE IMPORTED)
endif (NOT TARGET CONDUIT::CONDUIT)

# Set the link libraries for the target
set_property(TARGET CONDUIT::CONDUIT APPEND
  PROPERTY INTERFACE_LINK_LIBRARIES conduit conduit_relay conduit_blueprint conduit_relay_mpi)

set_property(TARGET CONDUIT::CONDUIT APPEND
  PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CONDUIT_INCLUDE_DIRS}")

#
# Cleanup
#

# Set the include directories
mark_as_advanced(FORCE CONDUIT_CMAKE_FILE)

# Set the libraries
set(CONDUIT_LIBRARIES CONDUIT::CONDUIT)

license_type: permissive

branch_name: refs/heads/master

extension: cmake


text:
#pragma once

#include "defines.hpp"

#include <string>
#include <sstream>

#include <boost/utility/string_view.hpp>

namespace msrv {

using StringView = boost::string_view;

class Tokenizer
{
public:
    Tokenizer(StringView str, char sep)
        : input_(str), sep_(sep) { }

    static bool hasToken(StringView value, StringView token, char sep);

    const StringView& token() const { return token_; }
    const StringView& input() const { return input_; }

    bool nextToken();

private:
    StringView token_;
    StringView input_;
    char sep_;
};

template<typename T>
std::string toString(const T& value)
{
    std::ostringstream stream;
    stream << value;
    return stream.str();
}

std::string formatString(const char* fmt, ...) MSRV_FORMAT_FUNC(1, 2);

StringView trim(StringView str, char ch);
StringView trimWhitespace(StringView str);

}

license: MIT

repository: stengerh/beefweb

repo_name: stengerh/beefweb

gha_license_id: MIT

extension: hpp


text:
DESCRIPTION = "Target packages for a standalone Arago SDK or external toolchain"
ALLOW_EMPTY = "1"
PR = "r3"
EXCLUDE_FROM_WORLD = "1"

PACKAGES = "${PN}"

# Stuff contained in this SDK is largely taken from task-sdk-base.bb.
# This is a starting point, and nothing more at present -- please fill
# this out with a reasonable set of development tools for a Arago image.
# Also feel free to remove stuff that's silly.

RDEPENDS_${PN} = "\
    alsa-dev \
    alsa-lib-dev \
    alsa-utils-dev \
    curl-dev \
    e2fsprogs-dev \
    i2c-tools-dev \
    freetype-dev \
    jpeg-dev \
    lzo-dev \
    libopkg-dev \
    libpng-dev \
    readline-dev \
    libts-dev \
    libusb-compat-dev \
    libusb1-dev \
    libvolume-id-dev \
    zlib-dev \
    mtd-utils-dev \
    ncurses-dev \
    opkg-dev \
    sysvinit-dev \
    "

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD

extension: bb


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="8.4.3">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="1" unitdist="mm" unit="mm" style="lines" multiple="1" display="yes" altdistance="5" altunitdist="mil" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="no" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="no" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="no" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="no" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="no" active="yes"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="no" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="no" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="no" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="no" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="113" name="IDFDebug" color="4" fill="1" visible="no" active="yes"/>
<layer number="114" name="Badge_Outline" color="7" fill="1" visible="no" active="yes"/>
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="no" active="yes"/>
<layer number="117" name="BACKMAAT1" color="7" fill="1" visible="no" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="yes"/>
<layer number="119" name="KAP_TEKEN" color="7" fill="1" visible="no" active="yes"/>
<layer number="120" name="KAP_MAAT1" color="7" fill="1" visible="no" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="no" active="yes"/>
<layer number="130" name="SMDSTROOK" color="7" fill="1" visible="no" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="no" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="no" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="no" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="no" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="no" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="153" name="FabDoc1" color="7" fill="1" visible="no" active="yes"/>
<layer number="154" name="FabDoc2" color="7" fill="1" visible="no" active="yes"/>
<layer number="155" name="FabDoc3" color="7" fill="1" visible="no" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="no" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="no" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="no" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="no" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="no" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="no" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="no" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="no" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="no" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="231" name="231bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="yes"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="yes"/>
<layer number="248" name="Housing" color="7" fill="1" visible="no" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="no" active="yes"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="no" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="no" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="0" x2="100" y2="0" width="0" layer="20"/>
<wire x1="100" y1="0" x2="100" y2="100" width="0" layer="20"/>
<wire x1="100" y1="100" x2="0" y2="100" width="0" layer="20"/>
<wire x1="0" y1="100" x2="0" y2="0" width="0" layer="20"/>
<wire x1="36.195" y1="24.765" x2="8.255" y2="24.765" width="0" layer="20"/>
<wire x1="8.255" y1="24.765" x2="6.985" y2="23.495" width="0" layer="20" curve="90"/>
<wire x1="6.985" y1="23.495" x2="6.985" y2="8.255" width="0" layer="20"/>
<wire x1="6.985" y1="8.255" x2="8.255" y2="6.985" width="0" layer="20" curve="90"/>
<wire x1="8.255" y1="6.985" x2="36.195" y2="6.985" width="0" layer="20"/>
<wire x1="36.195" y1="6.985" x2="37.465" y2="8.255" width="0" layer="20" curve="90"/>
<wire x1="37.465" y1="8.255" x2="37.465" y2="23.495" width="0" layer="20"/>
<wire x1="37.465" y1="23.495" x2="36.195" y2="24.765" width="0" layer="20" curve="90"/>
<text x="28.067" y="22.733" size="0.8128" layer="21" font="vector" rot="SR90">VIN</text>
<text x="28.067" y="7.239" size="0.8128" layer="21" font="vector" rot="SR90">GND</text>
<text x="22.479" y="21.717" size="0.8128" layer="21" font="vector" rot="SR0">GND</text>
<text x="12.065" y="7.239" size="0.8128" layer="21" font="vector" rot="SR90">VDD</text>
<text x="21.971" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">RXD</text>
<text x="19.431" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">TXD</text>
<text x="16.637" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">CTS</text>
<text x="14.351" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">VDD</text>
<text x="24.511" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">RTS</text>
<text x="27.051" y="9.525" size="0.8128" layer="22" font="vector" rot="SMR0">GND</text>
<text x="34.671" y="11.557" size="0.8128" layer="22" font="vector" rot="SMR0">https://skishida.github.io/</text>
<text x="7.747" y="21.209" size="0.8128" layer="21" font="vector">BLE Board</text>
<text x="26.797" y="21.463" size="0.8128" layer="22" font="vector" rot="MR0">VIN</text>
<text x="24.511" y="21.463" size="0.8128" layer="22" font="vector" rot="MR0">GND</text>
<text x="21.463" y="21.463" size="0.8128" layer="22" font="vector" rot="MR0">P5</text>
<text x="18.923" y="21.463" size="0.8128" layer="22" font="vector" rot="MR0">P4</text>
<text x="16.383" y="21.971" size="0.8128" layer="22" font="vector" rot="MR270">SWDIO</text>
<text x="13.589" y="21.971" size="0.8128" layer="22" font="vector" rot="MR270">SWCLK</text>
<dimension x1="6.985" y1="8.255" x2="37.465" y2="8.255" x3="22.225" y3="4.953" textsize="0.8128" layer="47" visible="yes"/>
<dimension x1="8.255" y1="6.985" x2="8.255" y2="24.765" x3="4.699" y3="15.875" textsize="0.8128" layer="47" visible="yes"/>
<wire x1="6" y1="6" x2="94" y2="6" width="2" layer="46"/>
<wire x1="94" y1="6" x2="94" y2="8" width="2" layer="46"/>
<wire x1="6" y1="6" x2="6" y2="8" width="2" layer="46"/>
<wire x1="91.75" y1="24.778" x2="63.81" y2="24.778" width="0" layer="20"/>
<wire x1="63.81" y1="24.778" x2="62.54" y2="23.508" width="0" layer="20" curve="90"/>
<wire x1="62.54" y1="23.508" x2="62.54" y2="8.268" width="0" layer="20"/>
<wire x1="62.54" y1="8.268" x2="63.81" y2="6.998" width="0" layer="20" curve="90"/>
<wire x1="63.81" y1="6.998" x2="91.75" y2="6.998" width="0" layer="20"/>
<wire x1="91.75" y1="6.998" x2="93.02" y2="8.268" width="0" layer="20" curve="90"/>
<wire x1="93.02" y1="8.268" x2="93.02" y2="23.508" width="0" layer="20"/>
<wire x1="93.02" y1="23.508" x2="91.75" y2="24.778" width="0" layer="20" curve="90"/>
<text x="83.622" y="22.746" size="0.8128" layer="21" font="vector" rot="SR90">VIN</text>
<text x="83.622" y="7.252" size="0.8128" layer="21" font="vector" rot="SR90">GND</text>
<text x="78.034" y="21.73" size="0.8128" layer="21" font="vector" rot="SR0">GND</text>
<text x="67.62" y="7.252" size="0.8128" layer="21" font="vector" rot="SR90">VDD</text>
<text x="77.526" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">RXD</text>
<text x="74.986" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">TXD</text>
<text x="72.192" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">CTS</text>
<text x="69.906" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">VDD</text>
<text x="80.066" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">RTS</text>
<text x="82.606" y="9.538" size="0.8128" layer="22" font="vector" rot="SMR0">GND</text>
<text x="90.226" y="11.57" size="0.8128" layer="22" font="vector" rot="SMR0">https://skishida.github.io/</text>
<text x="63.302" y="21.222" size="0.8128" layer="21" font="vector">BLE Board</text>
<text x="82.352" y="21.476" size="0.8128" layer="22" font="vector" rot="MR0">VIN</text>
<text x="80.066" y="21.476" size="0.8128" layer="22" font="vector" rot="MR0">GND</text>
<text x="77.018" y="21.476" size="0.8128" layer="22" font="vector" rot="MR0">P5</text>
<text x="74.478" y="21.476" size="0.8128" layer="22" font="vector" rot="MR0">P4</text>
<text x="71.938" y="21.984" size="0.8128" layer="22" font="vector" rot="MR270">SWDIO</text>
<text x="69.144" y="21.984" size="0.8128" layer="22" font="vector" rot="MR270">SWCLK</text>
<dimension x1="62.54" y1="8.268" x2="93.02" y2="8.268" x3="77.78" y3="4.966" textsize="0.8128" layer="47" visible="yes"/>
<dimension x1="63.81" y1="6.998" x2="63.81" y2="24.778" x3="60.254" y3="15.888" textsize="0.8128" layer="47" visible="yes"/>
</plain>
<libraries>
<library name="MBH7BLZ02">
<packages>
<package name="MBH7BLZ02">
<smd name="P$1" x="-4.9" y="-4.2" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$2" x="-4.2" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$3" x="-3.5" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$4" x="-2.8" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$5" x="-2.1" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$6" x="-1.4" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$7" x="-0.7" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$8" x="0" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$9" x="0.7" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$10" x="1.4" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$11" x="2.1" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$12" x="2.8" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$13" x="3.5" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$14" x="4.2" y="-4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$15" x="4.9" y="-4.2" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$16" x="4.9" y="-3.5" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$17" x="4.9" y="-2.8" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$18" x="4.9" y="-2.1" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$19" x="4.9" y="-1.4" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$20" x="4.9" y="-0.7" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$21" x="4.9" y="0" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$22" x="4.9" y="0.7" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$23" x="4.9" y="1.4" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$24" x="4.9" y="2.1" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$25" x="4.9" y="2.8" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$26" x="4.9" y="3.5" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$27" x="4.9" y="4.2" dx="0.5" dy="0.5" layer="1" rot="R180"/>
<smd name="P$28" x="4.2" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$29" x="3.5" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$30" x="2.8" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$31" x="2.1" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$32" x="1.4" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$33" x="0.7" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$34" x="0" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$35" x="-0.7" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$36" x="-1.4" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$37" x="-2.1" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$38" x="-2.8" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$39" x="-3.5" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$40" x="-4.2" y="4.2" dx="0.5" dy="0.45" layer="1" rot="R270"/>
<smd name="P$41" x="-4.9" y="4.2" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$42" x="-4.9" y="3.5" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$43" x="-4.9" y="2.8" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$44" x="-4.9" y="2.1" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$45" x="-4.9" y="1.4" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$46" x="-4.9" y="0.7" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$47" x="-4.9" y="0" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$48" x="-4.9" y="-0.7" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$49" x="-4.9" y="-1.4" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$50" x="-4.9" y="-2.1" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$51" x="-4.9" y="-2.8" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<smd name="P$52" x="-4.9" y="-3.5" dx="0.5" dy="0.5" layer="1" rot="R270"/>
<wire x1="-10.15" y1="-4.9" x2="5.55" y2="-4.9" width="0.127" layer="21"/>
<wire x1="5.55" y1="-4.9" x2="5.55" y2="4.9" width="0.127" layer="21"/>
<wire x1="5.55" y1="4.9" x2="-10.15" y2="4.9" width="0.127" layer="21"/>
<wire x1="-10.15" y1="4.9" x2="-10.15" y2="-4.9" width="0.127" layer="21"/>
<wire x1="0" y1="-4.9" x2="0" y2="4.9" width="0" layer="47"/>
<wire x1="-10.15" y1="0" x2="5.55" y2="0" width="0" layer="47"/>
<smd name="P$53" x="-1.7" y="1.45" dx="3" dy="2.5" layer="1"/>
<smd name="P$54" x="-1.7" y="-1.5" dx="3" dy="2.5" layer="1"/>
<smd name="P$55" x="1.7" y="-1.5" dx="3" dy="2.5" layer="1"/>
<smd name="P$56" x="1.7" y="1.45" dx="3" dy="2.5" layer="1"/>
<text x="-10.15" y="5.4" size="1.27" layer="25" font="vector">>NAME</text>
<text x="-10.15" y="-6.5" size="1.27" layer="27" font="vector">>VALUE</text>
<rectangle x1="-25" y1="-25" x2="-5" y2="25" layer="41"/>
<rectangle x1="-25" y1="-25" x2="-5" y2="25" layer="42"/>
</package>
</packages>
</library>
<library name="SparkFun-Connectors">
<description><h3>SparkFun Connectors</h3>
This library contains electrically-functional connectors.
<br>
<br>
We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
<br>
<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
<br>
<br>
<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
<br>
<br>
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1X06_NO_SILK">
<description><h3>Plated Through Hole - 6 Pin No Silk Outline</h3>
<p>Specifications:
<ul><li>Pin count:6</li>
<li>Pin pitch:0.1"</li>
</ul></p>
<p>Example device(s):
<ul><li>CONN_06</li>
</ul></p></description>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<text x="-1.27" y="1.397" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-1.27" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
<package name="1X03_NO_SILK">
<description><h3>Plated Through Hole - 3 Pin No Silk Outline</h3>
<p>Specifications:
<ul><li>Pin count:3</li>
<li>Pin pitch:0.1"</li>
</ul></p>
<p>Example device(s):
<ul><li>CONN_03</li>
</ul></p></description>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<text x="-1.27" y="1.397" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-1.27" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
<package name="1X05_NO_SILK">
<description><h3>Plated Through Hole - 5 Pin No Silk Outline</h3>
<p>Specifications:
<ul><li>Pin count:5</li>
<li>Pin pitch:0.1"</li>
</ul></p>
<p>Example device(s):
<ul><li>CONN_05</li>
</ul></p></description>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<text x="-1.27" y="1.397" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-1.27" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
</packages>
</library>
<library name="SparkFun-Electromechanical">
<description><h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find anything that moves- switches, relays, buttons, potentiometers. Also, anything that goes on a board but isn't electrical in nature- screws, standoffs, etc.<br><br>
We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
<br><br>
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="SMD1610">
<smd name="1" x="-0.55" y="-0.01" dx="1" dy="0.5" layer="1" rot="R90"/>
<smd name="2" x="0.55" y="-0.01" dx="1" dy="0.5" layer="1" rot="R90"/>
<wire x1="-0.8" y1="0.5" x2="0.8" y2="0.5" width="0.1524" layer="21"/>
<wire x1="0.8" y1="-0.5" x2="-0.8" y2="-0.5" width="0.1524" layer="21"/>
<wire x1="-0.8" y1="0.5" x2="-0.8" y2="-0.5" width="0.1524" layer="21"/>
<wire x1="0.8" y1="0.5" x2="0.8" y2="-0.5" width="0.1524" layer="21"/>
<text x="-1.5875" y="1.905" size="0.8128" layer="25" font="vector">>name</text>
<text x="-1.5875" y="0.9525" size="0.8128" layer="27" font="vector">>value</text>
</package>
</packages>
</library>
<library name="generic">
<packages>
<package name="SMD1608_REDUCED">
<description>1608M 0603<br>
REDUCED PATTERN</description>
<wire x1="-0.725" y1="0.35" x2="0.725" y2="0.35" width="0.1016" layer="51"/>
<wire x1="0.725" y1="-0.35" x2="-0.725" y2="-0.35" width="0.1016" layer="51"/>
<smd name="1" x="-0.875" y="0" dx="1.05" dy="0.85" layer="1"/>
<smd name="2" x="0.875" y="0" dx="1.05" dy="0.85" layer="1"/>
<text x="-0.8" y="0.65" size="0.8128" layer="25" font="vector">>NAME</text>
<text x="-0.8" y="-1.65" size="0.8128" layer="27" font="vector">>VALUE</text>
<rectangle x1="-0.8" y1="-0.4" x2="-0.45" y2="0.4" layer="51"/>
<rectangle x1="0.45" y1="-0.4" x2="0.8" y2="0.4" layer="51"/>
<rectangle x1="-1.4" y1="-0.5" x2="1.4" y2="0.5" layer="39"/>
</package>
<package name="LED1608_REDUCED">
<description>1608M 0603<br>
REDUCED PATTERN</description>
<smd name="A" x="-0.875" y="0" dx="1.05" dy="0.85" layer="1"/>
<smd name="K" x="0.875" y="0" dx="1.05" dy="0.85" layer="1"/>
<text x="-0.8" y="0.65" size="0.8128" layer="25" font="vector">>NAME</text>
<text x="-0.8" y="-1.65" size="0.8128" layer="27" font="vector">>VALUE</text>
<rectangle x1="-0.8" y1="-0.4" x2="-0.45" y2="0.4" layer="51"/>
<rectangle x1="0.45" y1="-0.4" x2="0.8" y2="0.4" layer="51"/>
<rectangle x1="-1.4" y1="-0.5" x2="1.4" y2="0.5" layer="39"/>
<polygon width="0.0508" layer="21">
<vertex x="-0.2175" y="0.4175"/>
<vertex x="-0.2175" y="-0.4175"/>
<vertex x="0.2175" y="0"/>
</polygon>
</package>
<package name="SMD1005">
<wire x1="-0.45" y1="0.25" x2="0.45" y2="0.25" width="0.1" layer="51"/>
<wire x1="0.45" y1="-0.25" x2="-0.45" y2="-0.25" width="0.1" layer="51"/>
<smd name="1" x="-0.5" y="0" dx="0.5" dy="0.5" layer="1"/>
<smd name="2" x="0.5" y="0" dx="0.5" dy="0.5" layer="1"/>
<text x="-0.8" y="0.65" size="1.016" layer="25">>NAME</text>
<text x="-0.8" y="-1.65" size="1.016" layer="27">>VALUE</text>
<rectangle x1="-0.5" y1="-0.3" x2="-0.2" y2="0.3" layer="51"/>
<rectangle x1="0.2" y1="-0.3" x2="0.5" y2="0.3" layer="51"/>
<rectangle x1="-0.8" y1="-0.3" x2="0.8" y2="0.3" layer="39"/>
</package>
</packages>
</library>
<library name="linear" urn="urn:adsk.eagle:library:262">
<description><b>Linear Devices</b><p>
Operational amplifiers,  comparators, voltage regulators, ADCs, DACs, etc.<p>
<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="SOT23" urn="urn:adsk.eagle:footprint:16354/1" library_version="2">
<description><b>SMALL OUTLINE TRANSISTOR</b><p>
reflow soldering</description>
<wire x1="-1.973" y1="1.983" x2="1.973" y2="1.983" width="0.0508" layer="39"/>
<wire x1="1.973" y1="-1.983" x2="-1.973" y2="-1.983" width="0.0508" layer="39"/>
<wire x1="-1.973" y1="-1.983" x2="-1.973" y2="1.983" width="0.0508" layer="39"/>
<wire x1="1.973" y1="1.983" x2="1.973" y2="-1.983" width="0.0508" layer="39"/>
<wire x1="1.422" y1="0.66" x2="1.422" y2="-0.66" width="0.1524" layer="51"/>
<wire x1="1.422" y1="-0.66" x2="-1.422" y2="-0.66" width="0.1524" layer="51"/>
<wire x1="-1.422" y1="-0.66" x2="-1.422" y2="0.66" width="0.1524" layer="51"/>
<wire x1="-1.422" y1="0.66" x2="1.422" y2="0.66" width="0.1524" layer="51"/>
<wire x1="-1.422" y1="-0.152" x2="-1.422" y2="0.66" width="0.1524" layer="21"/>
<wire x1="-1.422" y1="0.66" x2="-0.864" y2="0.66" width="0.1524" layer="21"/>
<wire x1="0.864" y1="0.66" x2="1.422" y2="0.66" width="0.1524" layer="21"/>
<wire x1="1.422" y1="0.66" x2="1.422" y2="-0.152" width="0.1524" layer="21"/>
<smd name="3" x="0" y="1.1" dx="1" dy="1.4" layer="1"/>
<smd name="2" x="0.95" y="-1.1" dx="1" dy="1.4" layer="1"/>
<smd name="1" x="-0.95" y="-1.1" dx="1" dy="1.4" layer="1"/>
<text x="-1.905" y="1.905" size="1.27" layer="25">>NAME</text>
<text x="-1.905" y="-3.175" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-0.2286" y1="0.7112" x2="0.2286" y2="1.2954" layer="51"/>
<rectangle x1="0.7112" y1="-1.2954" x2="1.1684" y2="-0.7112" layer="51"/>
<rectangle x1="-1.1684" y1="-1.2954" x2="-0.7112" y2="-0.7112" layer="51"/>
<rectangle x1="-0.5001" y1="-0.3" x2="0.5001" y2="0.3" layer="35"/>
</package>
</packages>
<packages3d>
<package3d name="SOT23" urn="urn:adsk.eagle:package:16489/2" type="model" library_version="2">
<description>SMALL OUTLINE TRANSISTOR
reflow soldering</description>
</package3d>
</packages3d>
</library>
<library name="logo">
<packages>
<package name="LOGO-20MM">
<polygon width="0.002540625" layer="21">
<vertex x="2.342640625" y="-1.20446875"/>
<vertex x="2.342640625" y="-1.2517125"/>
<vertex x="2.356103125" y="-1.2517125"/>
<vertex x="2.49428125" y="-1.2517125"/>
<vertex x="2.50698125" y="-1.240028125"/>
<vertex x="2.50698125" y="-1.215896875"/>
<vertex x="2.49428125" y="-1.20446875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="2.342640625" y="-1.20446875"/>
<vertex x="2.329434375" y="-1.20446875"/>
<vertex x="2.1645875" y="-1.20446875"/>
<vertex x="2.15391875" y="-1.21716875"/>
<vertex x="2.15391875" y="-1.433321875"/>
<vertex x="2.15391875" y="-1.649475"/>
<vertex x="2.15391875" y="-1.865884375"/>
<vertex x="2.1645875" y="-1.87833125"/>
<vertex x="2.329434375" y="-1.87833125"/>
<vertex x="2.342640625" y="-1.87833125"/>
<vertex x="2.342640625" y="-1.831340625"/>
<vertex x="2.217928125" y="-1.831340625"/>
<vertex x="2.207259375" y="-1.821940625"/>
<vertex x="2.207259375" y="-1.568196875"/>
<vertex x="2.217928125" y="-1.558796875"/>
<vertex x="2.342640625" y="-1.558796875"/>
<vertex x="2.342640625" y="-1.511553125"/>
<vertex x="2.217928125" y="-1.511553125"/>
<vertex x="2.207259375" y="-1.50215625"/>
<vertex x="2.207259375" y="-1.261109375"/>
<vertex x="2.217928125" y="-1.2517125"/>
<vertex x="2.342640625" y="-1.2517125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="2.342640625" y="-1.511553125"/>
<vertex x="2.342640625" y="-1.558796875"/>
<vertex x="2.464309375" y="-1.558796875"/>
<vertex x="2.476246875" y="-1.54736875"/>
<vertex x="2.476246875" y="-1.5232375"/>
<vertex x="2.464309375" y="-1.511553125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="2.342640625" y="-1.831340625"/>
<vertex x="2.342640625" y="-1.87833125"/>
<vertex x="2.49428125" y="-1.87833125"/>
<vertex x="2.50698125" y="-1.8669"/>
<vertex x="2.50698125" y="-1.84276875"/>
<vertex x="2.49428125" y="-1.831340625"/>
<vertex x="2.356103125" y="-1.831340625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.849375" y="-1.5199375"/>
<vertex x="1.849375" y="-1.5661625"/>
<vertex x="2.007615625" y="-1.5661625"/>
<vertex x="2.02056875" y="-1.55448125"/>
<vertex x="2.02056875" y="-1.531365625"/>
<vertex x="2.007615625" y="-1.5199375"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.849375" y="-1.5199375"/>
<vertex x="1.78561875" y="-1.5199375"/>
<vertex x="1.77291875" y="-1.531365625"/>
<vertex x="1.77291875" y="-1.55448125"/>
<vertex x="1.78561875" y="-1.5661625"/>
<vertex x="1.849375" y="-1.5661625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.452625" y="-1.20446875"/>
<vertex x="1.452625" y="-1.2517125"/>
<vertex x="1.5105375" y="-1.2517125"/>
<vertex x="1.585721875" y="-1.27838125"/>
<vertex x="1.611884375" y="-1.35534375"/>
<vertex x="1.611884375" y="-1.40461875"/>
<vertex x="1.62356875" y="-1.41731875"/>
<vertex x="1.653540625" y="-1.41731875"/>
<vertex x="1.665225" y="-1.40461875"/>
<vertex x="1.665225" y="-1.3533125"/>
<vertex x="1.625090625" y="-1.244346875"/>
<vertex x="1.515871875" y="-1.20446875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.452625" y="-1.20446875"/>
<vertex x="1.381253125" y="-1.20446875"/>
<vertex x="1.27203125" y="-1.244346875"/>
<vertex x="1.2319" y="-1.3533125"/>
<vertex x="1.2319" y="-1.541525"/>
<vertex x="1.2319" y="-1.7294875"/>
<vertex x="1.27203125" y="-1.838453125"/>
<vertex x="1.381253125" y="-1.87833125"/>
<vertex x="1.452625" y="-1.87833125"/>
<vertex x="1.452625" y="-1.831340625"/>
<vertex x="1.38556875" y="-1.831340625"/>
<vertex x="1.31089375" y="-1.803909375"/>
<vertex x="1.285240625" y="-1.727453125"/>
<vertex x="1.285240625" y="-1.541525"/>
<vertex x="1.285240625" y="-1.35534375"/>
<vertex x="1.31089375" y="-1.278890625"/>
<vertex x="1.38556875" y="-1.2517125"/>
<vertex x="1.452625" y="-1.2517125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.452625" y="-1.831340625"/>
<vertex x="1.452625" y="-1.87833125"/>
<vertex x="1.515871875" y="-1.87833125"/>
<vertex x="1.625090625" y="-1.838453125"/>
<vertex x="1.665225" y="-1.7294875"/>
<vertex x="1.665225" y="-1.678178125"/>
<vertex x="1.653540625" y="-1.66573125"/>
<vertex x="1.62356875" y="-1.66573125"/>
<vertex x="1.611884375" y="-1.678178125"/>
<vertex x="1.611884375" y="-1.727453125"/>
<vertex x="1.585721875" y="-1.804415625"/>
<vertex x="1.5105375" y="-1.831340625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.01320625" y="-1.20446875"/>
<vertex x="1.0025375" y="-1.21716875"/>
<vertex x="1.0025375" y="-1.433321875"/>
<vertex x="1.0025375" y="-1.491996875"/>
<vertex x="1.055878125" y="-1.491996875"/>
<vertex x="1.055878125" y="-1.433321875"/>
<vertex x="1.055878125" y="-1.21716875"/>
<vertex x="1.04419375" y="-1.20446875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.055878125" y="-1.491996875"/>
<vertex x="1.0025375" y="-1.491996875"/>
<vertex x="1.0025375" y="-1.649475"/>
<vertex x="1.0025375" y="-1.865884375"/>
<vertex x="1.01320625" y="-1.87833125"/>
<vertex x="1.04419375" y="-1.87833125"/>
<vertex x="1.055878125" y="-1.865884375"/>
<vertex x="1.055878125" y="-1.649475"/>
</polygon>
<polygon width="0.002540625" layer="51">
<vertex x="0.4135125" y="-1.20446875"/>
<vertex x="0.40284375" y="-1.21716875"/>
<vertex x="0.711709375" y="-1.21716875"/>
<vertex x="0.6771625" y="-1.20446875"/>
<vertex x="0.5453375" y="-1.20446875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="0.711709375" y="-1.21716875"/>
<vertex x="0.40284375" y="-1.21716875"/>
<vertex x="0.40284375" y="-1.433321875"/>
<vertex x="0.40284375" y="-1.569465625"/>
<vertex x="0.456184375" y="-1.569465625"/>
<vertex x="0.456184375" y="-1.448053125"/>
<vertex x="0.456184375" y="-1.261109375"/>
<vertex x="0.466853125" y="-1.2517125"/>
<vertex x="0.67183125" y="-1.2517125"/>
<vertex x="0.7470125" y="-1.27838125"/>
<vertex x="0.773175" y="-1.35534375"/>
<vertex x="0.773175" y="-1.541525"/>
<vertex x="0.773175" y="-1.569465625"/>
<vertex x="0.826515625" y="-1.569465625"/>
<vertex x="0.826515625" y="-1.541525"/>
<vertex x="0.826515625" y="-1.3533125"/>
<vertex x="0.786384375" y="-1.244346875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="0.826515625" y="-1.569465625"/>
<vertex x="0.773175" y="-1.569465625"/>
<vertex x="0.773175" y="-1.727453125"/>
<vertex x="0.7470125" y="-1.804415625"/>
<vertex x="0.67183125" y="-1.831340625"/>
<vertex x="0.466853125" y="-1.831340625"/>
<vertex x="0.456184375" y="-1.8216875"/>
<vertex x="0.456184375" y="-1.634996875"/>
<vertex x="0.456184375" y="-1.569465625"/>
<vertex x="0.40284375" y="-1.569465625"/>
<vertex x="0.40284375" y="-1.649475"/>
<vertex x="0.40284375" y="-1.865884375"/>
<vertex x="0.4135125" y="-1.87833125"/>
<vertex x="0.5453375" y="-1.87833125"/>
<vertex x="0.6771625" y="-1.87833125"/>
<vertex x="0.786384375" y="-1.838453125"/>
<vertex x="0.826515625" y="-1.7294875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.118109375" y="-1.54025625"/>
<vertex x="-0.0627375" y="-1.54025625"/>
<vertex x="-0.03606875" y="-1.456690625"/>
<vertex x="0.025146875" y="-1.262125"/>
<vertex x="0.0294625" y="-1.262125"/>
<vertex x="0.0911875" y="-1.456690625"/>
<vertex x="0.11785625" y="-1.54025625"/>
<vertex x="0.1737375" y="-1.54025625"/>
<vertex x="0.138684375" y="-1.433321875"/>
<vertex x="0.06781875" y="-1.21716875"/>
<vertex x="0.05283125" y="-1.20446875"/>
<vertex x="0.00279375" y="-1.20446875"/>
<vertex x="-0.012190625" y="-1.21716875"/>
<vertex x="-0.083059375" y="-1.433321875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.118109375" y="-1.54025625"/>
<vertex x="-0.15366875" y="-1.649475"/>
<vertex x="-0.2245375" y="-1.865884375"/>
<vertex x="-0.21716875" y="-1.87833125"/>
<vertex x="-0.183896875" y="-1.87833125"/>
<vertex x="-0.17018125" y="-1.865884375"/>
<vertex x="-0.112521875" y="-1.697990625"/>
<vertex x="0.027178125" y="-1.697990625"/>
<vertex x="0.16713125" y="-1.697990625"/>
<vertex x="0.224790625" y="-1.865884375"/>
<vertex x="0.23850625" y="-1.87833125"/>
<vertex x="0.272796875" y="-1.87833125"/>
<vertex x="0.2801625" y="-1.865884375"/>
<vertex x="0.209296875" y="-1.649475"/>
<vertex x="0.1737375" y="-1.54025625"/>
<vertex x="0.11785625" y="-1.54025625"/>
<vertex x="0.1531625" y="-1.651"/>
<vertex x="-0.0975375" y="-1.651"/>
<vertex x="-0.0627375" y="-1.54025625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.735584375" y="-1.45288125"/>
<vertex x="-0.68224375" y="-1.45288125"/>
<vertex x="-0.68224375" y="-1.4041125"/>
<vertex x="-0.68224375" y="-1.261109375"/>
<vertex x="-0.671575" y="-1.2517125"/>
<vertex x="-0.48691875" y="-1.2517125"/>
<vertex x="-0.411225" y="-1.278890625"/>
<vertex x="-0.38455625" y="-1.35534375"/>
<vertex x="-0.38455625" y="-1.45288125"/>
<vertex x="-0.331215625" y="-1.45288125"/>
<vertex x="-0.331215625" y="-1.3533125"/>
<vertex x="-0.37185625" y="-1.244346875"/>
<vertex x="-0.481584375" y="-1.20446875"/>
<vertex x="-0.724915625" y="-1.20446875"/>
<vertex x="-0.735584375" y="-1.21716875"/>
<vertex x="-0.735584375" y="-1.433321875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.735584375" y="-1.45288125"/>
<vertex x="-0.735584375" y="-1.649475"/>
<vertex x="-0.735584375" y="-1.865884375"/>
<vertex x="-0.724915625" y="-1.87833125"/>
<vertex x="-0.69418125" y="-1.87833125"/>
<vertex x="-0.68224375" y="-1.865884375"/>
<vertex x="-0.68224375" y="-1.738375"/>
<vertex x="-0.68224375" y="-1.611121875"/>
<vertex x="-0.671575" y="-1.601725"/>
<vertex x="-0.503175" y="-1.601725"/>
<vertex x="-0.44018125" y="-1.733803125"/>
<vertex x="-0.377190625" y="-1.865884375"/>
<vertex x="-0.3578875" y="-1.87833125"/>
<vertex x="-0.324865625" y="-1.87833125"/>
<vertex x="-0.3175" y="-1.865884375"/>
<vertex x="-0.381" y="-1.733803125"/>
<vertex x="-0.444246875" y="-1.601725"/>
<vertex x="-0.444246875" y="-1.59740625"/>
<vertex x="-0.361696875" y="-1.5494"/>
<vertex x="-0.331215625" y="-1.45288125"/>
<vertex x="-0.38455625" y="-1.45288125"/>
<vertex x="-0.38455625" y="-1.453896875"/>
<vertex x="-0.411225" y="-1.529840625"/>
<vertex x="-0.48691875" y="-1.5565125"/>
<vertex x="-0.671575" y="-1.5565125"/>
<vertex x="-0.68224375" y="-1.5471125"/>
<vertex x="-0.68224375" y="-1.45288125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-1.186940625" y="-1.87833125"/>
<vertex x="-1.055878125" y="-1.87833125"/>
<vertex x="-1.055878125" y="-1.829309375"/>
<vertex x="-1.060959375" y="-1.831340625"/>
<vertex x="-1.182878125" y="-1.831340625"/>
<vertex x="-1.2573" y="-1.803909375"/>
<vertex x="-1.282953125" y="-1.727453125"/>
<vertex x="-1.282953125" y="-1.541525"/>
<vertex x="-1.282953125" y="-1.35534375"/>
<vertex x="-1.2573" y="-1.278890625"/>
<vertex x="-1.182878125" y="-1.2517125"/>
<vertex x="-1.060959375" y="-1.2517125"/>
<vertex x="-1.055878125" y="-1.253490625"/>
<vertex x="-1.055878125" y="-1.20446875"/>
<vertex x="-1.186940625" y="-1.20446875"/>
<vertex x="-1.296415625" y="-1.244346875"/>
<vertex x="-1.33629375" y="-1.3533125"/>
<vertex x="-1.33629375" y="-1.541525"/>
<vertex x="-1.33629375" y="-1.7294875"/>
<vertex x="-1.296415625" y="-1.838453125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-1.055878125" y="-1.20446875"/>
<vertex x="-1.055878125" y="-1.253490625"/>
<vertex x="-0.985775" y="-1.27838125"/>
<vertex x="-0.9596125" y="-1.35534375"/>
<vertex x="-0.9596125" y="-1.541525"/>
<vertex x="-0.9596125" y="-1.727453125"/>
<vertex x="-0.985775" y="-1.804415625"/>
<vertex x="-1.055878125" y="-1.829309375"/>
<vertex x="-1.055878125" y="-1.87833125"/>
<vertex x="-0.946403125" y="-1.838453125"/>
<vertex x="-0.906271875" y="-1.7294875"/>
<vertex x="-0.906271875" y="-1.541525"/>
<vertex x="-0.906271875" y="-1.3533125"/>
<vertex x="-0.946403125" y="-1.244346875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-1.874265625" y="-1.20446875"/>
<vertex x="-1.884934375" y="-1.21716875"/>
<vertex x="-1.884934375" y="-1.433321875"/>
<vertex x="-1.884934375" y="-1.649475"/>
<vertex x="-1.884934375" y="-1.865884375"/>
<vertex x="-1.874265625" y="-1.87833125"/>
<vertex x="-1.843278125" y="-1.87833125"/>
<vertex x="-1.83159375" y="-1.865884375"/>
<vertex x="-1.83159375" y="-1.63321875"/>
<vertex x="-1.820925" y="-1.6248375"/>
<vertex x="-1.628646875" y="-1.6248375"/>
<vertex x="-1.628646875" y="-1.575053125"/>
<vertex x="-1.632965625" y="-1.576578125"/>
<vertex x="-1.820925" y="-1.576578125"/>
<vertex x="-1.83159375" y="-1.568196875"/>
<vertex x="-1.83159375" y="-1.414525"/>
<vertex x="-1.83159375" y="-1.261109375"/>
<vertex x="-1.820925" y="-1.2517125"/>
<vertex x="-1.632965625" y="-1.2517125"/>
<vertex x="-1.628646875" y="-1.2532375"/>
<vertex x="-1.628646875" y="-1.20446875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-1.628646875" y="-1.20446875"/>
<vertex x="-1.628646875" y="-1.2532375"/>
<vertex x="-1.558290625" y="-1.27838125"/>
<vertex x="-1.5326375" y="-1.35534375"/>
<vertex x="-1.5326375" y="-1.473709375"/>
<vertex x="-1.558290625" y="-1.549909375"/>
<vertex x="-1.628646875" y="-1.575053125"/>
<vertex x="-1.628646875" y="-1.6248375"/>
<vertex x="-1.51891875" y="-1.584959375"/>
<vertex x="-1.47828125" y="-1.47599375"/>
<vertex x="-1.47828125" y="-1.3533125"/>
<vertex x="-1.51891875" y="-1.244346875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-2.338325" y="-1.87833125"/>
<vertex x="-2.212340625" y="-1.87833125"/>
<vertex x="-2.212340625" y="-1.82371875"/>
<vertex x="-2.219959375" y="-1.831340625"/>
<vertex x="-2.330959375" y="-1.831340625"/>
<vertex x="-2.4343375" y="-1.7264375"/>
<vertex x="-2.4343375" y="-1.69189375"/>
<vertex x="-2.44601875" y="-1.680209375"/>
<vertex x="-2.477009375" y="-1.680209375"/>
<vertex x="-2.488690625" y="-1.69189375"/>
<vertex x="-2.488690625" y="-1.7294875"/>
<vertex x="-2.44830625" y="-1.838453125"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-2.212340625" y="-1.82371875"/>
<vertex x="-2.212340625" y="-1.87833125"/>
<vertex x="-2.1026125" y="-1.838453125"/>
<vertex x="-2.061971875" y="-1.7294875"/>
<vertex x="-2.061971875" y="-1.678178125"/>
<vertex x="-2.100325" y="-1.581659375"/>
<vertex x="-2.193796875" y="-1.5326375"/>
<vertex x="-2.212340625" y="-1.52831875"/>
<vertex x="-2.212340625" y="-1.585721875"/>
<vertex x="-2.15468125" y="-1.609090625"/>
<vertex x="-2.116328125" y="-1.681225"/>
<vertex x="-2.116328125" y="-1.725421875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-2.212340625" y="-1.585721875"/>
<vertex x="-2.212340625" y="-1.52831875"/>
<vertex x="-2.30301875" y="-1.50850625"/>
<vertex x="-2.4343375" y="-1.41096875"/>
<vertex x="-2.4343375" y="-1.358646875"/>
<vertex x="-2.331975" y="-1.2517125"/>
<vertex x="-2.221990625" y="-1.2517125"/>
<vertex x="-2.212340625" y="-1.2613625"/>
<vertex x="-2.212340625" y="-1.20523125"/>
<vertex x="-2.214625" y="-1.20446875"/>
<vertex x="-2.338325" y="-1.20446875"/>
<vertex x="-2.44830625" y="-1.244346875"/>
<vertex x="-2.488690625" y="-1.3533125"/>
<vertex x="-2.488690625" y="-1.41096875"/>
<vertex x="-2.4503375" y="-1.501140625"/>
<vertex x="-2.35711875" y="-1.5471125"/>
<vertex x="-2.247646875" y="-1.57124375"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-2.212340625" y="-1.20523125"/>
<vertex x="-2.212340625" y="-1.2613625"/>
<vertex x="-2.1186125" y="-1.356359375"/>
<vertex x="-2.1186125" y="-1.382521875"/>
<vertex x="-2.106675" y="-1.39420625"/>
<vertex x="-2.075940625" y="-1.39420625"/>
<vertex x="-2.064003125" y="-1.382521875"/>
<vertex x="-2.064003125" y="-1.3533125"/>
<vertex x="-2.10464375" y="-1.244346875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-1.082546875" y="-0.96646875"/>
<vertex x="-1.082546875" y="-0.36398125"/>
<vertex x="-1.12115625" y="-0.39166875"/>
<vertex x="-1.1295375" y="-0.380746875"/>
<vertex x="-1.2311375" y="-0.279146875"/>
<vertex x="-1.3327375" y="-0.177290625"/>
<vertex x="-1.4343375" y="-0.075690625"/>
<vertex x="-1.5359375" y="0.025909375"/>
<vertex x="-1.637790625" y="0.127509375"/>
<vertex x="-1.739390625" y="0.229109375"/>
<vertex x="-1.840990625" y="0.3309625"/>
<vertex x="-1.942590625" y="0.4325625"/>
<vertex x="-1.840990625" y="0.5341625"/>
<vertex x="-1.739390625" y="0.6357625"/>
<vertex x="-1.637790625" y="0.7373625"/>
<vertex x="-1.536190625" y="0.839215625"/>
<vertex x="-1.4343375" y="0.940815625"/>
<vertex x="-1.3327375" y="1.042415625"/>
<vertex x="-1.2311375" y="1.144015625"/>
<vertex x="-1.1295375" y="1.245615625"/>
<vertex x="-1.082546875" y="1.19888125"/>
<vertex x="-1.082546875" y="1.831340625"/>
<vertex x="-1.1295375" y="1.87833125"/>
<vertex x="-1.2405375" y="1.767078125"/>
<vertex x="-1.3517875" y="1.655825"/>
<vertex x="-1.463040625" y="1.544575"/>
<vertex x="-1.574290625" y="1.433321875"/>
<vertex x="-1.68554375" y="1.322325"/>
<vertex x="-1.796796875" y="1.211071875"/>
<vertex x="-1.908046875" y="1.09981875"/>
<vertex x="-2.019046875" y="0.98856875"/>
<vertex x="-2.130296875" y="0.877315625"/>
<vertex x="-2.24155" y="0.7660625"/>
<vertex x="-2.352803125" y="0.655065625"/>
<vertex x="-2.464053125" y="0.5438125"/>
<vertex x="-2.57530625" y="0.4325625"/>
<vertex x="-2.464053125" y="0.321309375"/>
<vertex x="-2.352803125" y="0.210059375"/>
<vertex x="-2.24155" y="0.09880625"/>
<vertex x="-2.130296875" y="-0.012446875"/>
<vertex x="-2.019046875" y="-0.12344375"/>
<vertex x="-1.908046875" y="-0.234696875"/>
<vertex x="-1.796796875" y="-0.345946875"/>
<vertex x="-1.68554375" y="-0.4572"/>
<vertex x="-1.574290625" y="-0.568453125"/>
<vertex x="-1.463040625" y="-0.679703125"/>
<vertex x="-1.3517875" y="-0.790703125"/>
<vertex x="-1.2405375" y="-0.901953125"/>
<vertex x="-1.1295375" y="-1.01320625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.0086375" y="1.5897875"/>
<vertex x="-0.0086375" y="1.142490625"/>
<vertex x="0" y="1.143253125"/>
<vertex x="0.106934375" y="1.133346875"/>
<vertex x="0.2103125" y="1.10363125"/>
<vertex x="0.306325" y="1.055115625"/>
<vertex x="0.204215625" y="0.953009375"/>
<vertex x="0.102109375" y="0.8509"/>
<vertex x="0" y="0.748790625"/>
<vertex x="-0.0086375" y="0.757428125"/>
<vertex x="-0.0086375" y="0.1247125"/>
<vertex x="0" y="0.11633125"/>
<vertex x="0.105409375" y="0.221740625"/>
<vertex x="0.21081875" y="0.327153125"/>
<vertex x="0.31623125" y="0.4325625"/>
<vertex x="0.39878125" y="0.5151125"/>
<vertex x="0.48133125" y="0.5976625"/>
<vertex x="0.564134375" y="0.6802125"/>
<vertex x="0.574040625" y="0.5356875"/>
<vertex x="0.547878125" y="0.393190625"/>
<vertex x="0.48691875" y="0.261875"/>
<vertex x="0.406653125" y="0.16154375"/>
<vertex x="0.354584375" y="0.115315625"/>
<vertex x="0.24003125" y="0.0452125"/>
<vertex x="0.11226875" y="0.0040625"/>
<vertex x="0.037846875" y="-0.0055875"/>
<vertex x="-0.0086375" y="-0.0055875"/>
<vertex x="-0.0086375" y="-0.454153125"/>
<vertex x="0" y="-0.45440625"/>
<vertex x="0.042925" y="-0.4531375"/>
<vertex x="0.190246875" y="-0.46558125"/>
<vertex x="0.335534375" y="-0.493775"/>
<vertex x="0.4770125" y="-0.53771875"/>
<vertex x="0.612646875" y="-0.596390625"/>
<vertex x="0.741425" y="-0.66954375"/>
<vertex x="0.8613125" y="-0.756159375"/>
<vertex x="0.971296875" y="-0.85521875"/>
<vertex x="1.050290625" y="-0.9342125"/>
<vertex x="1.1295375" y="-1.01320625"/>
<vertex x="1.191259375" y="-0.951484375"/>
<vertex x="1.191259375" y="-0.31876875"/>
<vertex x="1.1295375" y="-0.380746875"/>
<vertex x="1.12115625" y="-0.39166875"/>
<vertex x="0.995425" y="-0.30124375"/>
<vertex x="0.86233125" y="-0.22225"/>
<vertex x="0.7231375" y="-0.1546875"/>
<vertex x="0.80771875" y="-0.058928125"/>
<vertex x="0.88773125" y="0.060959375"/>
<vertex x="0.9502125" y="0.1905"/>
<vertex x="0.993646875" y="0.3279125"/>
<vertex x="1.017525" y="0.4699"/>
<vertex x="1.021334375" y="0.61391875"/>
<vertex x="1.004825" y="0.75691875"/>
<vertex x="0.968503125" y="0.8961125"/>
<vertex x="0.912621875" y="1.028953125"/>
<vertex x="1.02108125" y="1.1374125"/>
<vertex x="1.1295375" y="1.245615625"/>
<vertex x="1.191259375" y="1.18389375"/>
<vertex x="1.191259375" y="1.816353125"/>
<vertex x="1.1295375" y="1.87833125"/>
<vertex x="1.028953125" y="1.777746875"/>
<vertex x="0.92836875" y="1.6771625"/>
<vertex x="0.828040625" y="1.57683125"/>
<vertex x="0.72745625" y="1.476246875"/>
<vertex x="0.626871875" y="1.3756625"/>
<vertex x="0.515365625" y="1.451609375"/>
<vertex x="0.394715625" y="1.511809375"/>
<vertex x="0.266953125" y="1.555496875"/>
<vertex x="0.13461875" y="1.581659375"/>
<vertex x="0" y="1.590546875"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="-0.0086375" y="1.5897875"/>
<vertex x="-0.13461875" y="1.581659375"/>
<vertex x="-0.266953125" y="1.555496875"/>
<vertex x="-0.394715625" y="1.511809375"/>
<vertex x="-0.515365625" y="1.451609375"/>
<vertex x="-0.626871875" y="1.3756625"/>
<vertex x="-0.72745625" y="1.476246875"/>
<vertex x="-0.828040625" y="1.57683125"/>
<vertex x="-0.92836875" y="1.6771625"/>
<vertex x="-1.028953125" y="1.777746875"/>
<vertex x="-1.082546875" y="1.831340625"/>
<vertex x="-1.082546875" y="1.19888125"/>
<vertex x="-1.02108125" y="1.1374125"/>
<vertex x="-0.912621875" y="1.028953125"/>
<vertex x="-0.968503125" y="0.8961125"/>
<vertex x="-1.004825" y="0.75691875"/>
<vertex x="-1.021334375" y="0.61391875"/>
<vertex x="-1.017525" y="0.4699"/>
<vertex x="-0.993646875" y="0.3279125"/>
<vertex x="-0.9502125" y="0.1905"/>
<vertex x="-0.88773125" y="0.060959375"/>
<vertex x="-0.80771875" y="-0.058928125"/>
<vertex x="-0.7231375" y="-0.1546875"/>
<vertex x="-0.86233125" y="-0.22225"/>
<vertex x="-0.995425" y="-0.30124375"/>
<vertex x="-1.082546875" y="-0.36398125"/>
<vertex x="-1.082546875" y="-0.96646875"/>
<vertex x="-1.050290625" y="-0.9342125"/>
<vertex x="-0.971296875" y="-0.85521875"/>
<vertex x="-0.86156875" y="-0.7564125"/>
<vertex x="-0.74168125" y="-0.669796875"/>
<vertex x="-0.613409375" y="-0.596646875"/>
<vertex x="-0.478028125" y="-0.537971875"/>
<vertex x="-0.336803125" y="-0.49403125"/>
<vertex x="-0.192025" y="-0.4658375"/>
<vertex x="-0.044703125" y="-0.4531375"/>
<vertex x="-0.0086375" y="-0.454153125"/>
<vertex x="-0.0086375" y="-0.0055875"/>
<vertex x="-0.037846875" y="-0.0055875"/>
<vertex x="-0.1120125" y="0.0040625"/>
<vertex x="-0.240284375" y="0.045465625"/>
<vertex x="-0.355090625" y="0.115825"/>
<vertex x="-0.406653125" y="0.16154375"/>
<vertex x="-0.48691875" y="0.261875"/>
<vertex x="-0.547878125" y="0.393190625"/>
<vertex x="-0.574040625" y="0.5356875"/>
<vertex x="-0.56388125" y="0.6802125"/>
<vertex x="-0.48133125" y="0.5976625"/>
<vertex x="-0.39878125" y="0.5151125"/>
<vertex x="-0.31623125" y="0.4325625"/>
<vertex x="-0.21081875" y="0.327153125"/>
<vertex x="-0.105409375" y="0.221740625"/>
<vertex x="-0.0086375" y="0.1247125"/>
<vertex x="-0.0086375" y="0.757428125"/>
<vertex x="-0.102109375" y="0.8509"/>
<vertex x="-0.204215625" y="0.953009375"/>
<vertex x="-0.306325" y="1.055115625"/>
<vertex x="-0.2103125" y="1.10363125"/>
<vertex x="-0.106934375" y="1.133346875"/>
<vertex x="-0.0086375" y="1.142490625"/>
</polygon>
<polygon width="0.002540625" layer="21">
<vertex x="1.191259375" y="-0.951484375"/>
<vertex x="1.240790625" y="-0.901953125"/>
<vertex x="1.3517875" y="-0.790703125"/>
<vertex x="1.463040625" y="-0.679703125"/>
<vertex x="1.574290625" y="-0.568453125"/>
<vertex x="1.68554375" y="-0.4572"/>
<vertex x="1.796796875" y="-0.345946875"/>
<vertex x="1.908046875" y="-0.234696875"/>
<vertex x="2.0193" y="-0.12344375"/>
<vertex x="2.130296875" y="-0.012446875"/>
<vertex x="2.24155" y="0.09880625"/>
<vertex x="2.352803125" y="0.210059375"/>
<vertex x="2.464053125" y="0.321309375"/>
<vertex x="2.57530625" y="0.4325625"/>
<vertex x="2.464053125" y="0.5438125"/>
<vertex x="2.352803125" y="0.6548125"/>
<vertex x="2.24155" y="0.7660625"/>
<vertex x="2.130296875" y="0.877315625"/>
<vertex x="2.0193" y="0.98856875"/>
<vertex x="1.908046875" y="1.09981875"/>
<vertex x="1.796796875" y="1.211071875"/>
<vertex x="1.68554375" y="1.322325"/>
<vertex x="1.574290625" y="1.433321875"/>
<vertex x="1.463040625" y="1.544575"/>
<vertex x="1.352040625" y="1.655825"/>
<vertex x="1.2

extension: brd