text:
91" y2="6.411" width="0.4064" layer="1"/>
<wire x1="47.498" y1="11.938" x2="45.681" y2="11.938" width="0.4064" layer="1"/>
<wire x1="47.498" y1="9.017" x2="47.498" y2="11.938" width="0.4064" layer="16"/>
<wire x1="45.681" y1="9.017" x2="47.498" y2="9.017" width="0.4064" layer="1"/>
<via x="47.498" y="11.938" extent="1-16" drill="0.5"/>
<via x="47.498" y="9.017" extent="1-16" drill="0.5"/>
<wire x1="45.681" y1="9.017" x2="45.72" y2="8.978" width="0.4064" layer="1"/>
<wire x1="45.72" y1="8.978" x2="45.72" y2="6.511" width="0.4064" layer="1"/>
<wire x1="47.498" y1="11.938" x2="50.927" y2="15.367" width="0.4064" layer="16"/>
<via x="50.927" y="15.367" extent="1-16" drill="0.5"/>
<contactref element="9DOF" pad="15"/>
<contactref element="9DOF" pad="16"/>
<contactref element="9DOF" pad="17"/>
<contactref element="9DOF" pad="18"/>
<contactref element="R6" pad="1"/>
<contactref element="R11" pad="1"/>
<wire x1="50.888" y1="18.415" x2="50.927" y2="18.376" width="0.4064" layer="1"/>
<wire x1="50.927" y1="18.376" x2="50.927" y2="16.256" width="0.4064" layer="1"/>
<wire x1="50.927" y1="16.256" x2="50.927" y2="15.367" width="0.4064" layer="1"/>
<wire x1="50.888" y1="20.701" x2="50.888" y2="18.415" width="0.4064" layer="1"/>
<wire x1="45.847" y1="16.256" x2="46.101" y2="16.256" width="0.3048" layer="1"/>
<wire x1="46.101" y1="16.256" x2="46.609" y2="16.256" width="0.3048" layer="1"/>
<wire x1="46.609" y1="16.256" x2="50.927" y2="16.256" width="0.3048" layer="1"/>
<wire x1="45.085" y1="17.018" x2="45.4025" y2="16.7005" width="0.3048" layer="1"/>
<wire x1="45.4025" y1="16.7005" x2="45.847" y2="16.256" width="0.3048" layer="1"/>
<wire x1="45.085" y1="17.272" x2="45.085" y2="17.018" width="0.3048" layer="1"/>
<wire x1="45.085" y1="17.272" x2="45.089" y2="17.325" width="0.3048" layer="1"/>
<wire x1="45.593" y1="16.891" x2="45.4025" y2="16.7005" width="0.3048" layer="1"/>
<wire x1="45.593" y1="17.272" x2="45.593" y2="16.891" width="0.3048" layer="1"/>
<wire x1="45.593" y1="17.272" x2="45.589" y2="17.325" width="0.3048" layer="1"/>
<wire x1="46.101" y1="17.272" x2="46.101" y2="16.256" width="0.3048" layer="1"/>
<wire x1="46.101" y1="17.272" x2="46.089" y2="17.325" width="0.3048" layer="1"/>
<wire x1="46.609" y1="17.272" x2="46.609" y2="16.256" width="0.3048" layer="1"/>
<wire x1="46.609" y1="17.272" x2="46.589" y2="17.325" width="0.3048" layer="1"/>
<wire x1="47.498" y1="6.477" x2="49.022" y2="8.001" width="0.4064" layer="1"/>
<wire x1="49.022" y1="8.001" x2="50.8" y2="8.001" width="0.4064" layer="1"/>
</signal>
<signal name="SCL">
<contactref element="U1" pad="26"/>
<contactref element="R9" pad="1"/>
<contactref element="JP7" pad="1"/>
<wire x1="43.981" y1="11.938" x2="42.418" y2="11.938" width="0.4064" layer="1"/>
<wire x1="42.418" y1="11.938" x2="41.021" y2="10.541" width="0.4064" layer="1"/>
<wire x1="41.021" y1="10.541" x2="41.021" y2="8.2622" width="0.4064" layer="1"/>
<wire x1="41.021" y1="8.2622" x2="41.025" y2="8.2582" width="0.4064" layer="1"/>
<wire x1="43.981" y1="11.938" x2="43.981" y2="13.208" width="0.4064" layer="1"/>
<contactref element="9DOF" pad="21"/>
<wire x1="46.99" y1="18.796" x2="45.847" y2="18.796" width="0.3048" layer="1"/>
<wire x1="46.99" y1="18.796" x2="47.064" y2="18.8" width="0.3048" layer="1"/>
<via x="45.847" y="14.986" extent="1-16" drill="0.5"/>
<via x="45.847" y="18.796" extent="1-16" drill="0.5"/>
<wire x1="43.981" y1="13.208" x2="45.847" y2="13.208" width="0.4064" layer="1"/>
<wire x1="45.847" y1="13.208" x2="50.8" y2="13.208" width="0.4064" layer="1"/>
<wire x1="45.847" y1="14.986" x2="45.847" y2="18.796" width="0.4064" layer="16"/>
<wire x1="45.847" y1="14.986" x2="45.847" y2="13.208" width="0.4064" layer="1"/>
</signal>
<signal name="SDA">
<contactref element="U1" pad="27"/>
<contactref element="R8" pad="1"/>
<contactref element="JP6" pad="1"/>
<wire x1="46.482" y1="10.541" x2="44.069" y2="10.541" width="0.4064" layer="1"/>
<wire x1="44.069" y1="10.541" x2="42.418" y2="10.541" width="0.4064" layer="1"/>
<wire x1="41.675" y1="8.2582" x2="41.675" y2="9.798" width="0.4064" layer="1"/>
<wire x1="41.675" y1="9.798" x2="42.418" y2="10.541" width="0.4064" layer="1"/>
<wire x1="43.981" y1="9.017" x2="44.069" y2="9.017" width="0.4064" layer="1"/>
<wire x1="44.069" y1="9.017" x2="44.069" y2="10.541" width="0.4064" layer="1"/>
<contactref element="9DOF" pad="24"/>
<wire x1="47.752" y1="20.828" x2="47.752" y2="13.462" width="0.4064" layer="16"/>
<wire x1="47.498" y1="21.336" x2="47.752" y2="20.828" width="0.3048" layer="16"/>
<wire x1="47.498" y1="20.701" x2="47.498" y2="21.336" width="0.3048" layer="1"/>
<wire x1="47.117" y1="20.32" x2="47.498" y2="20.701" width="0.3048" layer="1"/>
<wire x1="47.117" y1="20.32" x2="47.064" y2="20.3" width="0.3048" layer="1"/>
<wire x1="46.482" y1="12.192" x2="47.752" y2="13.462" width="0.4064" layer="16"/>
<wire x1="46.482" y1="10.541" x2="46.482" y2="12.192" width="0.4064" layer="16"/>
<via x="47.498" y="21.336" extent="1-16" drill="0.5"/>
<via x="46.482" y="10.541" extent="1-16" drill="0.5"/>
<wire x1="46.482" y1="10.541" x2="50.8" y2="10.541" width="0.4064" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="LED1" pad="C"/>
<contactref element="R10" pad="1"/>
<wire x1="45.72" y1="4.411" x2="45.681" y2="4.411" width="0.4064" layer="1"/>
<wire x1="45.681" y1="4.411" x2="45.681" y2="2.159" width="0.4064" layer="1"/>
</signal>
<signal name="PWM15">
<contactref element="U1" pad="22"/>
<contactref element="Q15" pad="1"/>
<wire x1="38.425" y1="1.971" x2="38.425" y2="8.2582" width="0.4064" layer="1"/>
<wire x1="38.425" y1="1.971" x2="27.77" y2="1.971" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN0">
<contactref element="Q0" pad="3"/>
<contactref element="JP1" pad="2"/>
<wire x1="8.044" y1="21.463" x2="4.445" y2="21.463" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN1">
<contactref element="Q1" pad="3"/>
<contactref element="JP1" pad="1"/>
<wire x1="19.728" y1="20.828" x2="13.843" y2="20.828" width="0.4064" layer="1"/>
<wire x1="13.843" y1="20.828" x2="12.573" y2="19.558" width="0.4064" layer="1"/>
<wire x1="12.573" y1="19.558" x2="7.493" y2="19.558" width="0.4064" layer="1"/>
<wire x1="7.493" y1="19.558" x2="6.858" y2="20.193" width="0.4064" layer="1"/>
<wire x1="6.858" y1="20.193" x2="3.175" y2="20.193" width="0.4064" layer="1"/>
<wire x1="3.175" y1="20.193" x2="1.905" y2="21.463" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN2">
<contactref element="Q2" pad="3"/>
<contactref element="JP1" pad="4"/>
<wire x1="13.886" y1="18.923" x2="4.445" y2="18.923" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN3">
<contactref element="Q3" pad="3"/>
<contactref element="JP1" pad="3"/>
<wire x1="25.57" y1="18.288" x2="19.431" y2="18.288" width="0.4064" layer="1"/>
<wire x1="19.431" y1="18.288" x2="18.161" y2="17.018" width="0.4064" layer="1"/>
<wire x1="18.161" y1="17.018" x2="13.716" y2="17.018" width="0.4064" layer="1"/>
<wire x1="13.716" y1="17.018" x2="12.446" y2="18.288" width="0.4064" layer="1"/>
<wire x1="12.446" y1="18.288" x2="7.366" y2="18.288" width="0.4064" layer="1"/>
<wire x1="7.366" y1="18.288" x2="6.731" y2="17.653" width="0.4064" layer="1"/>
<wire x1="6.731" y1="17.653" x2="3.175" y2="17.653" width="0.4064" layer="1"/>
<wire x1="3.175" y1="17.653" x2="1.905" y2="18.923" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN4">
<contactref element="Q4" pad="3"/>
<contactref element="JP1" pad="6"/>
<wire x1="8.044" y1="16.383" x2="4.445" y2="16.383" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN5">
<contactref element="Q5" pad="3"/>
<contactref element="JP1" pad="5"/>
<wire x1="19.728" y1="15.748" x2="13.843" y2="15.748" width="0.4064" layer="1"/>
<wire x1="13.843" y1="15.748" x2="12.573" y2="14.478" width="0.4064" layer="1"/>
<wire x1="12.573" y1="14.478" x2="7.366" y2="14.478" width="0.4064" layer="1"/>
<wire x1="7.366" y1="14.478" x2="6.731" y2="15.113" width="0.4064" layer="1"/>
<wire x1="6.731" y1="15.113" x2="3.048" y2="15.113" width="0.4064" layer="1"/>
<wire x1="3.048" y1="15.113" x2="1.905" y2="16.383" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN6">
<contactref element="Q6" pad="3"/>
<contactref element="JP1" pad="8"/>
<wire x1="13.886" y1="13.843" x2="4.445" y2="13.843" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN7">
<contactref element="Q7" pad="3"/>
<contactref element="JP1" pad="7"/>
<wire x1="25.57" y1="13.208" x2="19.558" y2="13.208" width="0.4064" layer="1"/>
<wire x1="19.558" y1="13.208" x2="18.288" y2="11.938" width="0.4064" layer="1"/>
<wire x1="18.288" y1="11.938" x2="13.335" y2="11.938" width="0.4064" layer="1"/>
<wire x1="13.335" y1="11.938" x2="12.065" y2="13.208" width="0.4064" layer="1"/>
<wire x1="12.065" y1="13.208" x2="7.493" y2="13.208" width="0.4064" layer="1"/>
<wire x1="7.493" y1="13.208" x2="6.858" y2="12.573" width="0.4064" layer="1"/>
<wire x1="6.858" y1="12.573" x2="3.175" y2="12.573" width="0.4064" layer="1"/>
<wire x1="3.175" y1="12.573" x2="1.905" y2="13.843" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN8">
<contactref element="Q8" pad="3"/>
<contactref element="JP2" pad="2"/>
<wire x1="8.044" y1="11.303" x2="4.445" y2="11.303" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN9">
<contactref element="Q9" pad="3"/>
<contactref element="JP2" pad="1"/>
<wire x1="19.728" y1="10.668" x2="13.716" y2="10.668" width="0.4064" layer="1"/>
<wire x1="13.716" y1="10.668" x2="12.446" y2="9.398" width="0.4064" layer="1"/>
<wire x1="12.446" y1="9.398" x2="7.366" y2="9.398" width="0.4064" layer="1"/>
<wire x1="7.366" y1="9.398" x2="6.731" y2="10.033" width="0.4064" layer="1"/>
<wire x1="6.731" y1="10.033" x2="3.175" y2="10.033" width="0.4064" layer="1"/>
<wire x1="3.175" y1="10.033" x2="1.905" y2="11.303" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN10">
<contactref element="Q10" pad="3"/>
<contactref element="JP2" pad="4"/>
<wire x1="13.886" y1="8.763" x2="4.445" y2="8.763" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN11">
<contactref element="Q11" pad="3"/>
<contactref element="JP2" pad="3"/>
<wire x1="25.57" y1="8.128" x2="18.669" y2="8.128" width="0.4064" layer="1"/>
<wire x1="18.669" y1="8.128" x2="17.399" y2="6.858" width="0.4064" layer="1"/>
<wire x1="17.399" y1="6.858" x2="13.335" y2="6.858" width="0.4064" layer="1"/>
<wire x1="13.335" y1="6.858" x2="12.065" y2="8.128" width="0.4064" layer="1"/>
<wire x1="12.065" y1="8.128" x2="7.366" y2="8.128" width="0.4064" layer="1"/>
<wire x1="7.366" y1="8.128" x2="6.731" y2="7.493" width="0.4064" layer="1"/>
<wire x1="6.731" y1="7.493" x2="3.175" y2="7.493" width="0.4064" layer="1"/>
<wire x1="3.175" y1="7.493" x2="1.905" y2="8.763" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN12">
<contactref element="Q12" pad="3"/>
<contactref element="JP2" pad="6"/>
<wire x1="8.044" y1="6.223" x2="4.445" y2="6.223" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN13">
<contactref element="Q13" pad="3"/>
<contactref element="JP2" pad="5"/>
<wire x1="19.728" y1="5.588" x2="13.716" y2="5.588" width="0.4064" layer="1"/>
<wire x1="13.716" y1="5.588" x2="12.446" y2="4.318" width="0.4064" layer="1"/>
<wire x1="12.446" y1="4.318" x2="7.493" y2="4.318" width="0.4064" layer="1"/>
<wire x1="7.493" y1="4.318" x2="6.858" y2="4.953" width="0.4064" layer="1"/>
<wire x1="6.858" y1="4.953" x2="3.175" y2="4.953" width="0.4064" layer="1"/>
<wire x1="3.175" y1="4.953" x2="1.905" y2="6.223" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN14">
<contactref element="Q14" pad="3"/>
<contactref element="JP2" pad="8"/>
<wire x1="13.886" y1="3.683" x2="4.445" y2="3.683" width="0.4064" layer="1"/>
</signal>
<signal name="DRAIN15">
<contactref element="Q15" pad="3"/>
<contactref element="JP2" pad="7"/>
<wire x1="25.57" y1="2.921" x2="19.177" y2="2.921" width="0.4064" layer="1"/>
<wire x1="19.177" y1="2.921" x2="18.034" y2="1.778" width="0.4064" layer="1"/>
<wire x1="18.034" y1="1.778" x2="12.954" y2="1.778" width="0.4064" layer="1"/>
<wire x1="12.954" y1="1.778" x2="12.319" y2="2.413" width="0.4064" layer="1"/>
<wire x1="12.319" y1="2.413" x2="3.175" y2="2.413" width="0.4064" layer="1"/>
<wire x1="3.175" y1="2.413" x2="1.905" y2="3.683" width="0.4064" layer="1"/>
</signal>
<signal name="A0">
<contactref element="U1" pad="1"/>
</signal>
<signal name="A1">
<contactref element="U1" pad="2"/>
</signal>
<signal name="A2">
<contactref element="U1" pad="3"/>
</signal>
<signal name="A3">
<contactref element="U1" pad="4"/>
</signal>
<signal name="A4">
<contactref element="U1" pad="5"/>
</signal>
<signal name="A5">
<contactref element="U1" pad="24"/>
<contactref element="U1" pad="23"/>
<contactref element="R7" pad="1"/>
<wire x1="39.075" y1="8.2582" x2="39.075" y2="6.772" width="0.4064" layer="1"/>
<wire x1="39.075" y1="6.772" x2="39.37" y2="6.477" width="0.4064" layer="1"/>
<wire x1="39.37" y1="6.477" x2="40.005" y2="5.842" width="0.4064" layer="1"/>
<wire x1="40.005" y1="5.842" x2="40.005" y2="3.898" width="0.4064" layer="1"/>
<wire x1="39.725" y1="8.2582" x2="39.725" y2="6.832" width="0.4064" layer="1"/>
<wire x1="39.725" y1="6.832" x2="39.37" y2="6.477" width="0.4064" layer="1"/>
</signal>
<signal name="SA0_XM">
<contactref element="9DOF" pad="23"/>
<contactref element="R11" pad="2"/>
<wire x1="47.371" y1="19.812" x2="47.117" y2="19.812" width="0.3048" layer="1"/>
<wire x1="48.26" y1="20.701" x2="47.371" y2="19.812" width="0.3048" layer="1"/>
<wire x1="49.188" y1="20.701" x2="48.26" y2="20.701" width="0.3048" layer="1"/>
<wire x1="47.117" y1="19.812" x2="47.064" y2="19.8" width="0.3048" layer="1"/>
</signal>
<signal name="SA0_G">
<contactref element="9DOF" pad="22"/>
<contactref element="R6" pad="2"/>
<wire x1="48.641" y1="18.415" x2="49.188" y2="18.415" width="0.3048" layer="1"/>
<wire x1="47.752" y1="19.304" x2="48.641" y2="18.415" width="0.3048" layer="1"/>
<wire x1="47.117" y1="19.304" x2="47.752" y2="19.304" width="0.3048" layer="1"/>
<wire x1="47.117" y1="19.304" x2="47.064" y2="19.3" width="0.3048" layer="1"/>
</signal>
<signal name="N$2">
<contactref element="9DOF" pad="8"/>
<contactref element="C3" pad="1"/>
<wire x1="42.418" y1="20.447" x2="43.053" y2="19.812" width="0.3048" layer="1"/>
<wire x1="41.275" y1="20.447" x2="42.418" y2="20.447" width="0.3048" layer="1"/>
<wire x1="41.275" y1="20.447" x2="41.275" y2="20.508" width="0.3048" layer="1"/>
<wire x1="43.561" y1="19.812" x2="43.053" y2="19.812" width="0.3048" layer="1"/>
<wire x1="43.561" y1="19.812" x2="43.614" y2="19.8" width="0.3048" layer="1"/>
</signal>
<signal name="N$3">
<contactref element="9DOF" pad="9"/>
<contactref element="C3" pad="2"/>
<wire x1="42.418" y1="18.669" x2="43.053" y2="19.304" width="0.3048" layer="1"/>
<wire x1="41.275" y1="18.669" x2="42.418" y2="18.669" width="0.3048" layer="1"/>
<wire x1="41.275" y1="18.669" x2="41.275" y2="18.608" width="0.3048" layer="1"/>
<wire x1="43.561" y1="19.304" x2="43.053" y2="19.304" width="0.3048" layer="1"/>
<wire x1="43.561" y1="19.304" x2="43.614" y2="19.3" width="0.3048" layer="1"/>
</signal>
<signal name="N$6">
<contactref element="9DOF" pad="7"/>
<contactref element="C2" pad="1"/>
<wire x1="38.288" y1="21.082" x2="39.431" y2="22.225" width="0.3048" layer="1"/>
<wire x1="39.431" y1="22.225" x2="42.418" y2="22.225" width="0.3048" layer="1"/>
<wire x1="42.418" y1="22.225" x2="43.614" y2="21.029" width="0.3048" layer="1"/>
<wire x1="43.614" y1="21.029" x2="43.614" y2="20.3" width="0.3048" layer="1"/>
</signal>
</signals>
</board>
</drawing>
</eagle>


text:
package inspect

import (
	"bytes"
	"fmt"
	"go/doc"
	"go/format"
	"go/types"
	"log"
	"os"
	"path/filepath"
	"reflect"
	"strings"
	"text/template"
)

type ErrGofmt error

func Generate(pkg *Package, tpl *template.Template) (err error) {

	buf := &bytes.Buffer{}
	err = tpl.Execute(buf, TemplateVars(pkg))
	if err != nil {
		err = fmt.Errorf("executing template: %v", err)
		return
	}

	// Try to format (tidy) the source code, but if it fails just skip it.
	by := buf.Bytes()
	s, err := format.Source(by)
	if err != nil {
		err = ErrGofmt(fmt.Errorf("Go code formatting failed, producing unformatted code. %v", err))
	} else {
		by = s
	}

	// Write the code.
	outPath := filepath.Join(pkg.Dir, "generated_specs.go")
	out, err := os.Create(outPath)
	if err != nil {
		err = fmt.Errorf("creating output file %q: %v", outPath, err)
		return
	}
	defer out.Close()

	log.Printf("generated file %s\n", outPath)

	fmt.Fprintln(out, string(by))
	return
}

type uniqImports map[string]string

func (u uniqImports) Uniq(pkgname string) string {
	try := pkgname
	i := 1
	for {
		_, ok := u[pkgname]
		if !ok {
			break
		}
		try = fmt.Sprint("%s%d", pkgname, i)
	}
	return try
}

func TemplateVars(pkg *Package) map[string]interface{} {
	var defs []tplVars

	imports := uniqImports{
		"cli": "github.com/buchanae/cli",
	}

	for _, def := range pkg.Funcs {
		name := def.Name
		vars := tplVars{
			FuncName:     name,
			FuncNamePriv: makePrivate(name),
			Doc:          def.Doc,
		}

		for i, arg := range def.Args {
			typeName := arg.Type.String()
			if nt, ok := arg.Type.(*types.Named); ok {
				tn := nt.Obj()
				path := tn.Pkg().Path()
				name := tn.Name()
				if path != def.Package {
					pkgname := imports.Uniq(tn.Pkg().Name())
					imports[pkgname] = path
					typeName = pkgname + "." + name
				}
			}

			vars.Args = append(vars.Args, argVars{
				Idx:      i,
				Name:     arg.Name,
				Type:     typeName,
				Variadic: arg.Variadic,
			})
		}
		vars.HasArgs = len(vars.Args) > 0

		if def.Opts != nil {
			vars.HasOpts = true
			vars.HasDefaultOpts = def.HasDefaultOpts

			tn := def.OptsType.Obj()
			path := tn.Pkg().Path()
			name := tn.Name()

			if path == def.Package {
				vars.OptsType = name
				vars.DefaultOptsName = "Default" + name + "()"
			} else {
				pkgname := imports.Uniq(tn.Pkg().Name())
				imports[pkgname] = path
				vars.OptsType = pkgname + "." + name
				vars.DefaultOptsName = pkgname + ".Default" + name + "()"
			}
		}

		for _, opt := range def.Opts {
			vars.Opts = append(vars.Opts, optVars{
				Key:        opt.Key,
				KeyJoined:  strings.Join(opt.Key, "."),
				Type:       opt.Type.String(),
				Doc:        opt.Doc,
				Short:      reflect.StructTag(opt.Tag).Get("short"),
				Synopsis:   doc.Synopsis(opt.Doc),
				Deprecated: "",
				Hidden:     false,
			})
		}
		defs = append(defs, vars)
	}

	return map[string]interface{}{
		"Funcs":   defs,
		"Package": pkg.Name,
		"Imports": imports,
	}
}

func makePrivate(s string) string {
	return strings.ToLower(s[:1]) + s[1:]
}

type optVars struct {
	Key                       []string
	Doc, Synopsis, Deprecated string
	KeyJoined                 string
	Hidden                    bool
	Type                      string
	Short                     string
}

type tplVars struct {
	FuncName, FuncNamePriv, Synopsis, Doc, Example, Deprecated string
	Aliases                                                    []string
	Hidden                                                     bool

	HasOpts         bool
	HasDefaultOpts  bool
	DefaultOptsName string
	OptsType        string
	Opts            []optVars

	HasArgs bool
	Args    []argVars
}

type argVars struct {
	Idx      int
	Name     string
	Type     string
	Variadic bool
}

license: MIT

repository: buchanae/cli

license_type: permissive

repo_name: buchanae/cli

branch_name: refs/heads/master

extension: go


text:
SUMMARY = "OP-TEE Trusted OS"
DESCRIPTION = "Open Portable Trusted Execution Environment - Trusted side of the TEE"
HOMEPAGE = "https://www.op-tee.org/"

LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173"

PV = "3.8.0+git${SRCPV}"

inherit deploy python3native
require optee.inc

DEPENDS = "python3-pycryptodome-native python3-pycryptodomex-native python3-pyelftools-native"

SRCREV = "023e33656e2c9557ce50ad63a98b2e2c9b51c118"
SRC_URI = " \
    git://github.com/OP-TEE/optee_os.git \
    file://0001-allow-setting-sysroot-for-libgcc-lookup.patch \
"

S = "${WORKDIR}/git"

OPTEEMACHINE ?= "${MACHINE}"
OPTEEOUTPUTMACHINE ?= "${MACHINE}"

OPTEE_ARCH = "null"
OPTEE_ARCH_armv7a = "arm32"
OPTEE_ARCH_aarch64 = "arm64"
OPTEE_CORE = "${@d.getVar('OPTEE_ARCH').upper()}"

EXTRA_OEMAKE = " \
    PLATFORM=${OPTEEMACHINE} \
    CFG_${OPTEE_CORE}_core=y \
    CROSS_COMPILE_core=${HOST_PREFIX} \
    CROSS_COMPILE_ta_${OPTEE_ARCH}=${HOST_PREFIX} \
    NOWERROR=1 \
    V=1 \
    ta-targets=ta_${OPTEE_ARCH} \
    LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
"

CFLAGS[unexport] = "1"
LDFLAGS[unexport] = "1"
CPPFLAGS[unexport] = "1"
AS[unexport] = "1"
LD[unexport] = "1"

do_configure[noexec] = "1"

do_compile() {
    oe_runmake all CFG_TEE_TA_LOG_LEVEL=0
}

do_install() {
    #install core in firmware
    install -d ${D}${nonarch_base_libdir}/firmware/
    install -m 644 ${B}/out/arm-plat-${OPTEEOUTPUTMACHINE}/core/*.bin ${D}${nonarch_base_libdir}/firmware/

    #install TA devkit
    install -d ${D}${includedir}/optee/export-user_ta/
    for f in ${B}/out/arm-plat-${OPTEEOUTPUTMACHINE}/export-ta_${OPTEE_ARCH}/* ; do
        cp -aR $f ${D}${includedir}/optee/export-user_ta/
    done
}

PACKAGE_ARCH = "${MACHINE_ARCH}"

do_deploy() {
    install -d ${DEPLOYDIR}/optee
    install -m 644 ${D}${nonarch_base_libdir}/firmware/* ${DEPLOYDIR}/optee/
}

addtask deploy before do_build after do_install

FILES_${PN} = "${nonarch_base_libdir}/firmware/"
FILES_${PN}-dev = "${includedir}/optee/"

INSANE_SKIP_${PN}-dev = "staticdev"

INHIBIT_PACKAGE_STRIP = "1"

repository: acrlinux/acrlinux-yocto

repo_name: acrlinux/acrlinux-yocto

extension: bb


text:
using HotChocolate;
using Microsoft.AspNetCore.Http;
using MindNote.Data.Raws;
using MindNote.Data.Repositories;
using MindNote.Frontend.SDK.Identity;
using System.Linq;
using System.Threading.Tasks;

namespace MindNote.Backend.API.GraphQL.Resolvers
{
    public class CategoryResolver
    {
        private IHttpContextAccessor httpContextAccessor;
        private IIdentityDataGetter identityDataGetter;

        public CategoryResolver(IHttpContextAccessor httpContextAccessor, IIdentityDataGetter identityDataGetter)
        {
            this.httpContextAccessor = httpContextAccessor;
            this.identityDataGetter = identityDataGetter;
        }

        private string GetIdentity()
        {
            return identityDataGetter.GetClaimId(httpContextAccessor.HttpContext.User);
        }

        public async Task<RawUser> GetUser([Parent] RawCategory parent, [Service]IDataRepository repository)
        {
            return await repository.Users.Get(parent.UserId, GetIdentity());
        }

        public async Task<IQueryable<RawNote>> GetNotes([Parent] RawCategory parent, [Service]IDataRepository repository)
        {
            return await repository.Notes.Query(GetIdentity(), item => item.CategoryId == parent.Id);
        }
    }
}

repository: eXceediDeaL/MindNote

repo_name: eXceediDeaL/MindNote

branch_name: refs/heads/dev

gha_license_id: NOASSERTION

gha_language: C#

extension: cs


text:
@InProceedings{guan16,
  supplementary = {Supplementary:guan16-supp.pdf},
  title = {Efficient Multi-Instance Learning for Activity Recognition from Time Series Data Using an Auto-Regressive Hidden Markov Model},
  author = {Xinze Guan and Raviv Raich and {Weng-Keen} Wong},
  pages = {2330-2339},
  abstract = {Activity recognition from sensor data has spurred a great deal of interest due to its impact on health care. Prior work on activity recognition from multivariate time series data has mainly applied supervised learning techniques which require a high degree of annotation effort to produce training data with the start and end times of each activity. In order to reduce the annotation effort, we present a weakly supervised approach based on multi-instance learning. We introduce a generative graphical model for multi-instance learning on time series data based on an auto-regressive hidden Markov model. Our model has a number of advantages, including the ability to produce both bag and instance-level predictions as well as an efficient exact inference algorithm based on dynamic programming.},
}

repository: mreid/papersite

repo_name: mreid/papersite

gha_license_id: MIT

gha_language: TeX

extension: bib


text:
using System.ComponentModel;

namespace Bing.Biz.OAuthLogin.Core
{
    /// <summary>
    /// OAuth方式
    /// </summary>
    public enum OAuthWay
    {
        /// <summary>
        /// QQ
        /// </summary>
        [Description("QQ")]
        // ReSharper disable once InconsistentNaming
        QQ,

        /// <summary>
        /// 微信
        /// </summary>
        [Description("微信")]
        Wechat,

        /// <summary>
        /// 新浪微博
        /// </summary>
        [Description("新浪微博")]
        Weibo,

        /// <summary>
        /// 淘宝
        /// </summary>
        [Description("淘宝")]
        Taobao,

        /// <summary>
        /// 微软
        /// </summary>
        [Description("微软")]
        Microsoft,

        /// <summary>
        /// Github
        /// </summary>
        [Description("Github")]
        Github,

        /// <summary>
        /// Facebook
        /// </summary>
        [Description("Facebook")]
        Facebook,

        /// <summary>
        /// 有赞
        /// </summary>
        [Description("有赞")]
        Youzan,

        /// <summary>
        /// 京东
        /// </summary>
        [Description("京东")]
        Jd,

        /// <summary>
        /// 阿里巴巴
        /// </summary>
        [Description("阿里巴巴")]
        Alibaba,

        /// <summary>
        /// 美丽说
        /// </summary>
        [Description("美丽说")]
        MeiliShuo,

        /// <summary>
        /// 百度
        /// </summary>
        [Description("百度")]
        Baidu,

        /// <summary>
        /// Coding.NET
        /// </summary>
        [Description("Coding.NET")]
        Coding,

        /// <summary>
        /// 码云
        /// </summary>
        [Description("码云")]
        Gitee,

        /// <summary>
        /// 开源中国
        /// </summary>
        [Description("开源中国")]
        OsChina,

        /// <summary>
        /// 钉钉
        /// </summary>
        [Description("钉钉")]
        DingTalk,
    }
}


text:
package main

import (
	"html"
	"html/template"
	"log"
	"net/http"
	"os"
	"sync"

	"github.com/slcjordan/ws"
)

// A Room is a chatroom where people can talk.
type Room struct {
	sync.Mutex
	clients map[*ws.Client]struct{}
}

// Add adds a client to the room.
func (r *Room) Add(c *ws.Client) {
	r.Lock()
	defer r.Unlock()

	r.clients[c] = struct{}{}
}

// Remove removes a client from the room.
func (r *Room) Remove(c *ws.Client) {
	r.Lock()
	defer r.Unlock()

	delete(r.clients, c)
}

// Broadcast broadcasts a message to all clients.
func (r *Room) Broadcast(_ *ws.Client, msg []byte) {
	r.Lock()
	defer r.Unlock()

	s := "
" + html.EscapeString(string(msg)) + "
"
	b := []byte(s)
	for c := range r.clients {
		go c.Write(b)
	}
}

func main() {
	r := Room{
		clients: make(map[*ws.Client]struct{}),
	}
	logger := log.New(os.Stderr, " chat ", log.LstdFlags|log.Lshortfile)
	h := ws.Handler{
		ConnectListener: r.Add,
		CloseListener:   r.Remove,
		MessageListener: r.Broadcast,
		Logger:          logger,
	}

	http.Handle("/ws", &h)
	var port = ":8000"
	http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
		index.Execute(w, map[string]string{
			"hostname": "localhost",
			"port":     port,
		})
	})
	logger.Printf("serving at %s\n", port)
	http.ListenAndServe(port, nil)
}

var index = template.Must(template.New("index").Parse(`
<!DOCTYPE html>

	<meta charset="UTF-8">
	<title></title>

	<input class="line" type="text" ></input>

`))

repository: slcjordan/ws

repo_name: slcjordan/ws


text:
package main

import (
	"encoding/json"
	"errors"
	"fmt"
	"net/http"
	"strconv"
	"time"

	"git.alhur.es/fiatjaf/lntxbot/t"
	"gopkg.in/jmcvetta/napping.v3"
)

type GiftsOrder struct {
	OrderId          string `json:"orderId"`
	ChargeId         string `json:"chargeId"`
	Status           string `json:"status"`
	LightningInvoice struct {
		PayReq string `json:"payreq"`
	} `json:"lightningInvoice"`
}

type GiftsError struct {
	Message string `json:"message"`
}

type GiftsGift struct {
	OrderId        string `json:"orderId"`
	Spent          bool   `json:"spent"`
	WithdrawalInfo struct {
		CreatedAt struct {
			Seconds int64 `json:"_seconds"`
		} `json:"createdAt"`

		// these two fields are the same, the API was broken and old stuff is different from new stuff
		Reference         string `json:"reference"`
		WithdrawalInvoice string `json:"withdrawalInvoice"`
	} `json:"withdrawalInfo"`
	Amount int `json:"amount"`
}

type GiftSpentEvent struct {
	OrderId string `json:"id"`
	Amount  int    `json:"amount"`
	Spent   bool   `json:"spent"`
}

type GiftsData struct {
	Gifts []string `json:"gifts"`
}

func (g GiftsGift) WithdrawDate() string {
	return time.Unix(g.WithdrawalInfo.CreatedAt.Seconds, 0).Format("2 Jan 2006 at 3:04PM")
}

func (g GiftsGift) RedeemerURL() string {
	invoice := g.WithdrawalInfo.WithdrawalInvoice
	if invoice == "" {
		invoice = g.WithdrawalInfo.Reference
	}
	inv, _ := ln.Call("decodepay", invoice)
	return nodeLink(inv.Get("payee").String())
}

func createGift(user User, sats int, messageId int) error {
	var order GiftsOrder
	var gerr GiftsError
	resp, err := napping.Post("https://api.lightning.gifts/create", struct {
		Amount int    `json:"amount"`
		Notify string `json:"notify"`
	}{sats, fmt.Sprintf("%s/app/gifts/webhook?user=%d", s.ServiceURL, user.Id)}, &order, &gerr)
	if err != nil {
		return err
	}
	if resp.Status() >= 300 {
		if gerr.Message == "GIFT_AMOUNT_UNDER_100" {
			return errors.New("Gift should be at least 100 sat!")
		} else {
			return errors.New("lightning.gifts error: " + gerr.Message)
		}
	}

	inv, err := ln.Call("decodepay", order.LightningInvoice.PayReq)
	if err != nil {
		return errors.New("Failed to decode invoice.")
	}

	return user.actuallySendExternalPayment(
		messageId, order.LightningInvoice.PayReq, inv, inv.Get("msatoshi").Int(),
		fmt.Sprintf("%s.gifts.%s.%d", s.ServiceId, order.OrderId, user.Id),
		func(
			u User,
			messageId int,
			msatoshi float64,
			msatoshi_sent float64,
			preimage string,
			tag string,
			hash string,
		) {
			// on success
			paymentHasSucceeded(u, messageId, msatoshi, msatoshi_sent, preimage, "gifts", hash)

			// wait for gift to be available
			for i := 0; i < 10; i++ {
				var status GiftsOrder
				napping.Get("https://api.lightning.gifts/status/"+order.ChargeId, nil, &status, nil)
				if status.Status == "paid" {
					break
				}
				time.Sleep(time.Second * time.Duration(i))
			}

			// we already have the order id which is the gift url
			u.notifyAsReply(t.GIFTSCREATED, t.T{"OrderId": order.OrderId}, messageId)

			// save gift info as user data
			var data GiftsData
			err := user.getAppData("gifts", &data)
			if err != nil {
				u.notify(t.GIFTSFAILEDSAVE, t.T{"Err": err.Error()})
				return
			}
			data.Gifts = append(data.Gifts, order.OrderId)

			// limit stored gifts to 50
			if len(data.Gifts) > 50 {
				data.Gifts = data.Gifts[len(data.Gifts)-50:]
			}

			err = user.setAppData("gifts", data)
			if err != nil {
				u.notify(t.GIFTSFAILEDSAVE, t.T{"Err": err.Error()})
				return
			}
		},
		func(
			u User,
			messageId int,
			hash string,
		) {
			// on failure
			paymentHasFailed(u, messageId, hash)
		},
	)
}

func getGift(orderId string) (gift GiftsGift, err error) {
	_, err = napping.Get("https://api.lightning.gifts/gift/"+orderId, nil, &gift, nil)
	return
}

func serveGiftsWebhook() {
	router.Path("/app/gifts/webhook").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// parse the incoming data
		var event GiftSpentEvent
		err := json.NewDecoder(r.Body).Decode(&event)
		if err != nil {
			log.Warn().Err(err).Msg("error decoding gifts webhook")
			return
		}

		// fetch gift
		gift, err := getGift(event.OrderId)
		if err != nil {
			log.Warn().Err(err).Interface("ev", event).Msg("error fetching gift on webhook")
			return
		}

		// fetch user
		userId, err := strconv.Atoi(r.URL.Query().Get("user"))
		if err != nil {
			log.Warn().Err(err).Interface("ev", event).Msg("invalid user on gifts webhook")
		}
		user, err := loadUser(userId, 0)
		if err != nil {
			log.Warn().Err(err).Interface("ev", event).Msg("error loading gifts giver after webhook")
		}

		user.notify(t.GIFTSSPENTEVENT, t.T{
			"Id":          gift.OrderId,
			"Description": gift.WithdrawalInfo.Reference,
			"Amount":      gift.Amount,
		})
	})
}

func loadUserFromGiftId(giftId string) (u User, err error) {
	err = pg.Get(&u, `
SELECT `+USERFIELDS+`
FROM telegram.account
WHERE appdata->'gifts' ?| array[$1]
    `, giftId)
	return
}

repository: thehapax/lntxbot

repo_name: thehapax/lntxbot


text:
package main

import (
	"net/http"

	"github.com/skillkit/go-ghome"
)

func main() {
	app := ghome.NewApp()

	app.OnIntent(func(w ghome.ResponseWriter, r *ghome.Request) error {
		w.WriteSpeech("Hello, world!")
		return nil
	})

	http.Handle("/", app.Handler())
	http.ListenAndServe(":3000", nil)
}

repository: skillkit/go-ghome

repo_name: skillkit/go-ghome


text:
using System;

[Serializable]
public class BlackKnight : Foe {

	public static int frequency = 3;

	public BlackKnight() : base("Black Knight", 25) {
		empoweredBattlePoints = 35;
	}

}

repository: AlexeiTipenko/Quest

path: /Quest of the Round Table/Assets/Scripts/Card/Adventure/Foe/BlackKnight.cs

repo_name: AlexeiTipenko/Quest


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.2.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1778" unitdist="mm" unit="mm" style="lines" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="no" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="no" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="no" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="no" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="no" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="no" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="no" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="no" 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="yes" 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="no" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" 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="no" 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="no" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="no" 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="no" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="no" 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="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="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" 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="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="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="21.006" y2="0" width="0" layer="20"/>
<wire x1="21.006" y1="0" x2="21.006" y2="20.818" width="0" layer="20"/>
<wire x1="21.006" y1="20.818" x2="0" y2="20.818" width="0" layer="20"/>
<wire x1="0" y1="20.818" x2="0" y2="0" width="0" layer="20"/>
<text x="4.5212" y="2.0828" size="0.8128" layer="21" font="vector" rot="R135">ADiea</text>
<text x="19.558" y="4.572" size="0.6096" layer="21" font="vector" rot="R225">19.02.15</text>
<rectangle x1="10.5791" y1="0.8001" x2="10.7569" y2="0.9779" layer="30"/>
<rectangle x1="10.4013" y1="0.9779" x2="11.2903" y2="1.1557" layer="30"/>
<rectangle x1="10.0457" y1="1.1557" x2="11.4681" y2="1.3335" layer="30"/>
<rectangle x1="9.8679" y1="1.3335" x2="11.4681" y2="1.5113" layer="30"/>
<rectangle x1="9.8679" y1="1.5113" x2="11.6459" y2="1.6891" layer="30"/>
<rectangle x1="9.8679" y1="1.6891" x2="11.6459" y2="1.8669" layer="30"/>
<rectangle x1="10.4013" y1="1.8669" x2="11.4681" y2="2.0447" layer="30"/>
<rectangle x1="9.1567" y1="2.0447" x2="10.0457" y2="2.2225" layer="30"/>
<rectangle x1="10.4013" y1="2.0447" x2="11.1125" y2="2.2225" layer="30"/>
<rectangle x1="11.4681" y1="2.0447" x2="12.5349" y2="2.2225" layer="30"/>
<rectangle x1="8.9789" y1="2.2225" x2="10.2235" y2="2.4003" layer="30"/>
<rectangle x1="10.5791" y1="2.2225" x2="10.9347" y2="2.4003" layer="30"/>
<rectangle x1="11.4681" y1="2.2225" x2="12.5349" y2="2.4003" layer="30"/>
<rectangle x1="8.8011" y1="2.4003" x2="10.4013" y2="2.5781" layer="30"/>
<rectangle x1="10.5791" y1="2.4003" x2="10.9347" y2="2.5781" layer="30"/>
<rectangle x1="11.2903" y1="2.4003" x2="12.5349" y2="2.5781" layer="30"/>
<rectangle x1="8.8011" y1="2.5781" x2="10.4013" y2="2.7559" layer="30"/>
<rectangle x1="10.5791" y1="2.5781" x2="10.9347" y2="2.7559" layer="30"/>
<rectangle x1="11.1125" y1="2.5781" x2="12.5349" y2="2.7559" layer="30"/>
<rectangle x1="8.9789" y1="2.7559" x2="10.5791" y2="2.9337" layer="30"/>
<rectangle x1="10.9347" y1="2.7559" x2="12.5349" y2="2.9337" layer="30"/>
<rectangle x1="8.9789" y1="2.9337" x2="10.5791" y2="3.1115" layer="30"/>
<rectangle x1="10.9347" y1="2.9337" x2="12.5349" y2="3.1115" layer="30"/>
<rectangle x1="9.1567" y1="3.1115" x2="10.5791" y2="3.2893" layer="30"/>
<rectangle x1="10.9347" y1="3.1115" x2="12.3571" y2="3.2893" layer="30"/>
<rectangle x1="5.9563" y1="3.2893" x2="6.1341" y2="3.4671" layer="30"/>
<rectangle x1="8.6233" y1="3.2893" x2="8.9789" y2="3.4671" layer="30"/>
<rectangle x1="9.5123" y1="3.2893" x2="10.5791" y2="3.4671" layer="30"/>
<rectangle x1="10.9347" y1="3.2893" x2="12.0015" y2="3.4671" layer="30"/>
<rectangle x1="12.5349" y1="3.2893" x2="12.7127" y2="3.4671" layer="30"/>
<rectangle x1="4.1783" y1="3.4671" x2="5.0673" y2="3.6449" layer="30"/>
<rectangle x1="5.7785" y1="3.4671" x2="6.4897" y2="3.6449" layer="30"/>
<rectangle x1="8.6233" y1="3.4671" x2="9.3345" y2="3.6449" layer="30"/>
<rectangle x1="9.6901" y1="3.4671" x2="10.5791" y2="3.6449" layer="30"/>
<rectangle x1="10.9347" y1="3.4671" x2="12.0015" y2="3.6449" layer="30"/>
<rectangle x1="12.3571" y1="3.4671" x2="12.8905" y2="3.6449" layer="30"/>
<rectangle x1="4.0005" y1="3.6449" x2="5.0673" y2="3.8227" layer="30"/>
<rectangle x1="5.4229" y1="3.6449" x2="6.6675" y2="3.8227" layer="30"/>
<rectangle x1="8.6233" y1="3.6449" x2="9.5123" y2="3.8227" layer="30"/>
<rectangle x1="9.6901" y1="3.6449" x2="10.5791" y2="3.8227" layer="30"/>
<rectangle x1="10.9347" y1="3.6449" x2="11.8237" y2="3.8227" layer="30"/>
<rectangle x1="12.0015" y1="3.6449" x2="13.0683" y2="3.8227" layer="30"/>
<rectangle x1="14.8463" y1="3.6449" x2="15.7353" y2="3.8227" layer="30"/>
<rectangle x1="16.2687" y1="3.6449" x2="17.5133" y2="3.8227" layer="30"/>
<rectangle x1="3.8227" y1="3.8227" x2="5.0673" y2="4.0005" layer="30"/>
<rectangle x1="5.4229" y1="3.8227" x2="6.8453" y2="4.0005" layer="30"/>
<rectangle x1="7.0231" y1="3.8227" x2="7.5565" y2="4.0005" layer="30"/>
<rectangle x1="8.6233" y1="3.8227" x2="9.6901" y2="4.0005" layer="30"/>
<rectangle x1="9.8679" y1="3.8227" x2="10.5791" y2="4.0005" layer="30"/>
<rectangle x1="10.9347" y1="3.8227" x2="11.6459" y2="4.0005" layer="30"/>
<rectangle x1="11.8237" y1="3.8227" x2="13.0683" y2="4.0005" layer="30"/>
<rectangle x1="14.6685" y1="3.8227" x2="16.0909" y2="4.0005" layer="30"/>
<rectangle x1="16.2687" y1="3.8227" x2="17.5133" y2="4.0005" layer="30"/>
<rectangle x1="3.8227" y1="4.0005" x2="5.0673" y2="4.1783" layer="30"/>
<rectangle x1="5.4229" y1="4.0005" x2="7.7343" y2="4.1783" layer="30"/>
<rectangle x1="8.6233" y1="4.0005" x2="9.6901" y2="4.1783" layer="30"/>
<rectangle x1="9.8679" y1="4.0005" x2="11.4681" y2="4.1783" layer="30"/>
<rectangle x1="11.8237" y1="4.0005" x2="12.8905" y2="4.1783" layer="30"/>
<rectangle x1="13.9573" y1="4.0005" x2="14.3129" y2="4.1783" layer="30"/>
<rectangle x1="14.6685" y1="4.0005" x2="16.0909" y2="4.1783" layer="30"/>
<rectangle x1="16.2687" y1="4.0005" x2="17.5133" y2="4.1783" layer="30"/>
<rectangle x1="3.8227" y1="4.1783" x2="5.0673" y2="4.3561" layer="30"/>
<rectangle x1="5.4229" y1="4.1783" x2="6.6675" y2="4.3561" layer="30"/>
<rectangle x1="6.8453" y1="4.1783" x2="7.7343" y2="4.3561" layer="30"/>
<rectangle x1="8.6233" y1="4.1783" x2="9.6901" y2="4.3561" layer="30"/>
<rectangle x1="9.8679" y1="4.1783" x2="11.4681" y2="4.3561" layer="30"/>
<rectangle x1="11.6459" y1="4.1783" x2="12.8905" y2="4.3561" layer="30"/>
<rectangle x1="13.7795" y1="4.1783" x2="14.4907" y2="4.3561" layer="30"/>
<rectangle x1="14.6685" y1="4.1783" x2="16.0909" y2="4.3561" layer="30"/>
<rectangle x1="16.2687" y1="4.1783" x2="17.5133" y2="4.3561" layer="30"/>
<rectangle x1="3.8227" y1="4.3561" x2="5.0673" y2="4.5339" layer="30"/>
<rectangle x1="5.4229" y1="4.3561" x2="6.6675" y2="4.5339" layer="30"/>
<rectangle x1="6.8453" y1="4.3561" x2="7.7343" y2="4.5339" layer="30"/>
<rectangle x1="8.8011" y1="4.3561" x2="12.5349" y2="4.5339" layer="30"/>
<rectangle x1="13.6017" y1="4.3561" x2="14.4907" y2="4.5339" layer="30"/>
<rectangle x1="14.8463" y1="4.3561" x2="16.0909" y2="4.5339" layer="30"/>
<rectangle x1="16.2687" y1="4.3561" x2="17.6911" y2="4.5339" layer="30"/>
<rectangle x1="3.8227" y1="4.5339" x2="5.0673" y2="4.7117" layer="30"/>
<rectangle x1="5.4229" y1="4.5339" x2="6.6675" y2="4.7117" layer="30"/>
<rectangle x1="6.8453" y1="4.5339" x2="7.7343" y2="4.7117" layer="30"/>
<rectangle x1="8.9789" y1="4.5339" x2="12.5349" y2="4.7117" layer="30"/>
<rectangle x1="13.6017" y1="4.5339" x2="14.4907" y2="4.7117" layer="30"/>
<rectangle x1="14.8463" y1="4.5339" x2="16.0909" y2="4.7117" layer="30"/>
<rectangle x1="16.2687" y1="4.5339" x2="17.6911" y2="4.7117" layer="30"/>
<rectangle x1="4.8895" y1="4.7117" x2="5.2451" y2="4.8895" layer="30"/>
<rectangle x1="5.6007" y1="4.7117" x2="6.6675" y2="4.8895" layer="30"/>
<rectangle x1="6.8453" y1="4.7117" x2="7.7343" y2="4.8895" layer="30"/>
<rectangle x1="9.3345" y1="4.7117" x2="12.3571" y2="4.8895" layer="30"/>
<rectangle x1="13.6017" y1="4.7117" x2="14.4907" y2="4.8895" layer="30"/>
<rectangle x1="14.8463" y1="4.7117" x2="15.9131" y2="4.8895" layer="30"/>
<rectangle x1="16.2687" y1="4.7117" x2="17.5133" y2="4.8895" layer="30"/>
<rectangle x1="4.3561" y1="4.8895" x2="4.7117" y2="5.0673" layer="30"/>
<rectangle x1="5.7785" y1="4.8895" x2="7.7343" y2="5.0673" layer="30"/>
<rectangle x1="9.3345" y1="4.8895" x2="12.1793" y2="5.0673" layer="30"/>
<rectangle x1="13.6017" y1="4.8895" x2="14.4907" y2="5.0673" layer="30"/>
<rectangle x1="14.6685" y1="4.8895" x2="15.9131" y2="5.0673" layer="30"/>
<rectangle x1="4.0005" y1="5.0673" x2="5.0673" y2="5.2451" layer="30"/>
<rectangle x1="5.7785" y1="5.0673" x2="7.7343" y2="5.2451" layer="30"/>
<rectangle x1="9.5123" y1="5.0673" x2="12.0015" y2="5.2451" layer="30"/>
<rectangle x1="13.6017" y1="5.0673" x2="14.4907" y2="5.2451" layer="30"/>
<rectangle x1="14.6685" y1="5.0673" x2="15.7353" y2="5.2451" layer="30"/>
<rectangle x1="4.0005" y1="5.2451" x2="5.2451" y2="5.4229" layer="30"/>
<rectangle x1="5.7785" y1="5.2451" x2="6.8453" y2="5.4229" layer="30"/>
<rectangle x1="7.0231" y1="5.2451" x2="7.7343" y2="5.4229" layer="30"/>
<rectangle x1="9.5123" y1="5.2451" x2="12.0015" y2="5.4229" layer="30"/>
<rectangle x1="13.6017" y1="5.2451" x2="14.4907" y2="5.4229" layer="30"/>
<rectangle x1="14.6685" y1="5.2451" x2="15.7353" y2="5.4229" layer="30"/>
<rectangle x1="16.2687" y1="5.2451" x2="17.3355" y2="5.4229" layer="30"/>
<rectangle x1="3.8227" y1="5.4229" x2="5.6007" y2="5.6007" layer="30"/>
<rectangle x1="5.9563" y1="5.4229" x2="7.7343" y2="5.6007" layer="30"/>
<rectangle x1="9.5123" y1="5.4229" x2="12.0015" y2="5.6007" layer="30"/>
<rectangle x1="13.6017" y1="5.4229" x2="14.3129" y2="5.6007" layer="30"/>
<rectangle x1="14.4907" y1="5.4229" x2="15.5575" y2="5.6007" layer="30"/>
<rectangle x1="16.0909" y1="5.4229" x2="17.5133" y2="5.6007" layer="30"/>
<rectangle x1="3.8227" y1="5.6007" x2="5.7785" y2="5.7785" layer="30"/>
<rectangle x1="6.3119" y1="5.6007" x2="7.9121" y2="5.7785" layer="30"/>
<rectangle x1="9.3345" y1="5.6007" x2="12.1793" y2="5.7785" layer="30"/>
<rectangle x1="13.4239" y1="5.6007" x2="15.3797" y2="5.7785" layer="30"/>
<rectangle x1="15.5575" y1="5.6007" x2="17.6911" y2="5.7785" layer="30"/>
<rectangle x1="3.8227" y1="5.7785" x2="5.9563" y2="5.9563" layer="30"/>
<rectangle x1="6.1341" y1="5.7785" x2="8.0899" y2="5.9563" layer="30"/>
<rectangle x1="9.1567" y1="5.7785" x2="10.5791" y2="5.9563" layer="30"/>
<rectangle x1="10.7569" y1="5.7785" x2="12.3571" y2="5.9563" layer="30"/>
<rectangle x1="13.4239" y1="5.7785" x2="15.2019" y2="5.9563" layer="30"/>
<rectangle x1="15.5575" y1="5.7785" x2="17.6911" y2="5.9563" layer="30"/>
<rectangle x1="3.8227" y1="5.9563" x2="8.4455" y2="6.1341" layer="30"/>
<rectangle x1="8.8011" y1="5.9563" x2="10.5791" y2="6.1341" layer="30"/>
<rectangle x1="10.9347" y1="5.9563" x2="12.5349" y2="6.1341" layer="30"/>
<rectangle x1="13.2461" y1="5.9563" x2="17.6911" y2="6.1341" layer="30"/>
<rectangle x1="4.0005" y1="6.1341" x2="10.5791" y2="6.3119" layer="30"/>
<rectangle x1="10.9347" y1="6.1341" x2="17.5133" y2="6.3119" layer="30"/>
<rectangle x1="4.0005" y1="6.3119" x2="4.7117" y2="6.4897" layer="30"/>
<rectangle x1="5.0673" y1="6.3119" x2="10.5791" y2="6.4897" layer="30"/>
<rectangle x1="10.9347" y1="6.3119" x2="17.5133" y2="6.4897" layer="30"/>
<rectangle x1="5.7785" y1="6.4897" x2="10.4013" y2="6.6675" layer="30"/>
<rectangle x1="11.1125" y1="6.4897" x2="16.0909" y2="6.6675" layer="30"/>
<rectangle x1="4.1783" y1="6.6675" x2="10.0457" y2="6.8453" layer="30"/>
<rectangle x1="11.4681" y1="6.6675" x2="17.1577" y2="6.8453" layer="30"/>
<rectangle x1="4.1783" y1="6.8453" x2="9.8679" y2="7.0231" layer="30"/>
<rectangle x1="11.4681" y1="6.8453" x2="17.1577" y2="7.0231" layer="30"/>
<rectangle x1="4.1783" y1="7.0231" x2="9.6901" y2="7.2009" layer="30"/>
<rectangle x1="11.6459" y1="7.0231" x2="17.1577" y2="7.2009" layer="30"/>
<rectangle x1="4.3561" y1="7.2009" x2="7.5565" y2="7.3787" layer="30"/>
<rectangle x1="7.9121" y1="7.2009" x2="9.1567" y2="7.3787" layer="30"/>
<rectangle x1="12.0015" y1="7.2009" x2="13.7795" y2="7.3787" layer="30"/>
<rectangle x1="13.9573" y1="7.2009" x2="17.1577" y2="7.3787" layer="30"/>
<rectangle x1="4.5339" y1="7.3787" x2="7.5565" y2="7.5565" layer="30"/>
<rectangle x1="12.5349" y1="7.3787" x2="13.4239" y2="7.5565" layer="30"/>
<rectangle x1="13.9573" y1="7.3787" x2="17.1577" y2="7.5565" layer="30"/>
<rectangle x1="6.1341" y1="7.5565" x2="7.5565" y2="7.7343" layer="30"/>
<rectangle x1="13.7795" y1="7.5565" x2="15.3797" y2="7.7343" layer="30"/>
<rectangle x1="6.3119" y1="7.7343" x2="7.7343" y2="7.9121" layer="30"/>
<rectangle x1="13.7795" y1="7.7343" x2="15.2019" y2="7.9121" layer="30"/>
<rectangle x1="6.3119" y1="7.9121" x2="7.7343" y2="8.0899" layer="30"/>
<rectangle x1="13.7795" y1="7.9121" x2="15.2019" y2="8.0899" layer="30"/>
<rectangle x1="3.8227" y1="8.0899" x2="4.0005" y2="8.2677" layer="30"/>
<rectangle x1="6.4897" y1="8.0899" x2="7.7343" y2="8.2677" layer="30"/>
<rectangle x1="13.7795" y1="8.0899" x2="15.0241" y2="8.2677" layer="30"/>
<rectangle x1="3.6449" y1="8.2677" x2="4.3561" y2="8.4455" layer="30"/>
<rectangle x1="6.4897" y1="8.2677" x2="7.7343" y2="8.4455" layer="30"/>
<rectangle x1="13.7795" y1="8.2677" x2="15.0241" y2="8.4455" layer="30"/>
<rectangle x1="2.4003" y1="8.4455" x2="3.1115" y2="8.6233" layer="30"/>
<rectangle x1="3.4671" y1="8.4455" x2="4.8895" y2="8.6233" layer="30"/>
<rectangle x1="6.3119" y1="8.4455" x2="7.5565" y2="8.6233" layer="30"/>
<rectangle x1="13.7795" y1="8.4455" x2="15.0241" y2="8.6233" layer="30"/>
<rectangle x1="16.8021" y1="8.4455" x2="17.8689" y2="8.6233" layer="30"/>
<rectangle x1="2.2225" y1="8.6233" x2="3.2893" y2="8.8011" layer="30"/>
<rectangle x1="3.6449" y1="8.6233" x2="4.8895" y2="8.8011" layer="30"/>
<rectangle x1="6.1341" y1="8.6233" x2="7.5565" y2="8.8011" layer="30"/>
<rectangle x1="13.7795" y1="8.6233" x2="15.2019" y2="8.8011" layer="30"/>
<rectangle x1="16.6243" y1="8.6233" x2="17.8689" y2="8.8011" layer="30"/>
<rectangle x1="18.4023" y1="8.6233" x2="18.5801" y2="8.8011" layer="30"/>
<rectangle x1="2.2225" y1="8.8011" x2="3.4671" y2="8.9789" layer="30"/>
<rectangle x1="3.8227" y1="8.8011" x2="5.0673" y2="8.9789" layer="30"/>
<rectangle x1="5.9563" y1="8.8011" x2="7.5565" y2="8.9789" layer="30"/>
<rectangle x1="13.7795" y1="8.8011" x2="15.2019" y2="8.9789" layer="30"/>
<rectangle x1="16.4465" y1="8.8011" x2="17.6911" y2="8.9789" layer="30"/>
<rectangle x1="18.0467" y1="8.8011" x2="18.9357" y2="8.9789" layer="30"/>
<rectangle x1="2.2225" y1="8.9789" x2="3.6449" y2="9.1567" layer="30"/>
<rectangle x1="4.0005" y1="8.9789" x2="5.2451" y2="9.1567" layer="30"/>
<rectangle x1="5.7785" y1="8.9789" x2="7.3787" y2="9.1567" layer="30"/>
<rectangle x1="13.7795" y1="8.9789" x2="15.3797" y2="9.1567" layer="30"/>
<rectangle x1="16.2687" y1="8.9789" x2="17.6911" y2="9.1567" layer="30"/>
<rectangle x1="18.0467" y1="8.9789" x2="19.1135" y2="9.1567" layer="30"/>
<rectangle x1="2.2225" y1="9.1567" x2="3.8227" y2="9.3345" layer="30"/>
<rectangle x1="4.0005" y1="9.1567" x2="7.3787" y2="9.3345" layer="30"/>
<rectangle x1="13.9573" y1="9.1567" x2="15.3797" y2="9.3345" layer="30"/>
<rectangle x1="16.2687" y1="9.1567" x2="17.5133" y2="9.3345" layer="30"/>
<rectangle x1="17.8689" y1="9.1567" x2="19.1135" y2="9.3345" layer="30"/>
<rectangle x1="2.2225" y1="9.3345" x2="4.0005" y2="9.5123" layer="30"/>
<rectangle x1="4.3561" y1="9.3345" x2="7.2009" y2="9.5123" layer="30"/>
<rectangle x1="13.9573" y1="9.3345" x2="17.3355" y2="9.5123" layer="30"/>
<rectangle x1="17.6911" y1="9.3345" x2="19.1135" y2="9.5123" layer="30"/>
<rectangle x1="1.5113" y1="9.5123" x2="2.0447" y2="9.6901" layer="30"/>
<rectangle x1="2.2225" y1="9.5123" x2="7.0231" y2="9.6901" layer="30"/>
<rectangle x1="14.1351" y1="9.5123" x2="16.9799" y2="9.6901" layer="30"/>
<rectangle x1="17.1577" y1="9.5123" x2="19.1135" y2="9.6901" layer="30"/>
<rectangle x1="1.3335" y1="9.6901" x2="2.0447" y2="9.8679" layer="30"/>
<rectangle x1="2.4003" y1="9.6901" x2="6.8453" y2="9.8679" layer="30"/>
<rectangle x1="14.3129" y1="9.6901" x2="16.9799" y2="9.8679" layer="30"/>
<rectangle x1="17.1577" y1="9.6901" x2="19.1135" y2="9.8679" layer="30"/>
<rectangle x1="19.4691" y1="9.6901" x2="19.6469" y2="9.8679" layer="30"/>
<rectangle x1="1.1557" y1="9.8679" x2="2.2225" y2="10.0457" layer="30"/>
<rectangle x1="2.7559" y1="9.8679" x2="6.8453" y2="10.0457" layer="30"/>
<rectangle x1="14.3129" y1="9.8679" x2="18.9357" y2="10.0457" layer="30"/>
<rectangle x1="19.1135" y1="9.8679" x2="20.0025" y2="10.0457" layer="30"/>
<rectangle x1="1.1557" y1="10.0457" x2="2.5781" y2="10.2235" layer="30"/>
<rectangle x1="2.9337" y1="10.0457" x2="6.4897" y2="10.2235" layer="30"/>
<rectangle x1="14.4907" y1="10.0457" x2="18.7579" y2="10.2235" layer="30"/>
<rectangle x1="19.1135" y1="10.0457" x2="20.0025" y2="10.2235" layer="30"/>
<rectangle x1="1.1557" y1="10.2235" x2="2.7559" y2="10.4013" layer="30"/>
<rectangle x1="3.8227" y1="10.2235" x2="6.1341" y2="10.4013" layer="30"/>
<rectangle x1="14.6685" y1="10.2235" x2="18.5801" y2="10.4013" layer="30"/>
<rectangle x1="19.1135" y1="10.2235" x2="20.0025" y2="10.4013" layer="30"/>
<rectangle x1="1.1557" y1="10.4013" x2="2.7559" y2="10.5791" layer="30"/>
<rectangle x1="3.6449" y1="10.4013" x2="6.1341" y2="10.5791" layer="30"/>
<rectangle x1="15.3797" y1="10.4013" x2="17.1577" y2="10.5791" layer="30"/>
<rectangle x1="18.5801" y1="10.4013" x2="20.1803" y2="10.5791" layer="30"/>
<rectangle x1="1.1557" y1="10.5791" x2="2.2225" y2="10.7569" layer="30"/>
<rectangle x1="2.9337" y1="10.5791" x2="6.4897" y2="10.7569" layer="30"/>
<rectangle x1="15.2019" y1="10.5791" x2="17.1577" y2="10.7569" layer="30"/>
<rectangle x1="18.5801" y1="10.5791" x2="20.1803" y2="10.7569" layer="30"/>
<rectangle x1="1.1557" y1="10.7569" x2="2.2225" y2="10.9347" layer="30"/>
<rectangle x1="2.5781" y1="10.7569" x2="6.8453" y2="10.9347" layer="30"/>
<rectangle x1="14.8463" y1="10.7569" x2="18.2245" y2="10.9347" layer="30"/>
<rectangle x1="18.7579" y1="10.7569" x2="20.0025" y2="10.9347" layer="30"/>
<rectangle x1="1.3335" y1="10.9347" x2="2.0447" y2="11.1125" layer="30"/>
<rectangle x1="2.4003" y1="10.9347" x2="6.8453" y2="11.1125" layer="30"/>
<rectangle x1="14.6685" y1="10.9347" x2="18.5801" y2="11.1125" layer="30"/>
<rectangle x1="18.9357" y1="10.9347" x2="20.0025" y2="11.1125" layer="30"/>
<rectangle x1="1.6891" y1="11.1125" x2="2.0447" y2="11.2903" layer="30"/>
<rectangle x1="2.2225" y1="11.1125" x2="7.0231" y2="11.2903" layer="30"/>
<rectangle x1="14.3129" y1="11.1125" x2="18.7579" y2="11.2903" layer="30"/>
<rectangle x1="19.1135" y1="11.1125" x2="20.0025" y2="11.2903" layer="30"/>
<rectangle x1="2.2225" y1="11.2903" x2="3.8227" y2="11.4681" layer="30"/>
<rectangle x1="4.1783" y1="11.2903" x2="7.2009" y2="11.4681" layer="30"/>
<rectangle x1="14.1351" y1="11.2903" x2="16.8021" y2="11.4681" layer="30"/>
<rectangle x1="17.1577" y1="11.2903" x2="19.1135" y2="11.4681" layer="30"/>
<rectangle x1="19.4691" y1="11.2903" x2="19.6469" y2="11.4681" layer="30"/>
<rectangle x1="2.2225" y1="11.4681" x2="3.8227" y2="11.6459" layer="30"/>
<rectangle x1="4.0005" y1="11.4681" x2="7.2009" y2="11.6459" layer="30"/>
<rectangle x1="14.1351" y1="11.4681" x2="16.9799" y2="11.6459" layer="30"/>
<rectangle x1="17.3355" y1="11.4681" x2="19.1135" y2="11.6459" layer="30"/>
<rectangle x1="2.2225" y1="11.6459" x2="3.4671" y2="11.8237" layer="30"/>
<rectangle x1="3.8227" y1="11.6459" x2="5.2451" y2="11.8237" layer="30"/>
<rectangle x1="5.7785" y1="11.6459" x2="7.3787" y2="11.8237" layer="30"/>
<rectangle x1="13.9573" y1="11.6459" x2="17.1577" y2="11.8237" layer="30"/>
<rectangle x1="17.5133" y1="11.6459" x2="19.1135" y2="11.8237" layer="30"/>
<rectangle x1="2.2225" y1="11.8237" x2="3.2893" y2="12.0015" layer="30"/>
<rectangle x1="3.6449" y1="11.8237" x2="5.0673" y2="12.0015" layer="30"/>
<rectangle x1="5.9563" y1="11.8237" x2="7.3787" y2="12.0015" layer="30"/>
<rectangle x1="13.9573" y1="11.8237" x2="17.3355" y2="12.0015" layer="30"/>
<rectangle x1="17.6911" y1="11.8237" x2="19.1135" y2="12.0015" layer="30"/>
<rectangle x1="2.2225" y1="12.0015" x2="3.2893" y2="12.1793" layer="30"/>
<rectangle x1="3.6449" y1="12.0015" x2="4.8895" y2="12.1793" layer="30"/>
<rectangle x1="6.1341" y1="12.0015" x2="7.5565" y2="12.1793" layer="30"/>
<rectangle x1="13.7795" y1="12.0015" x2="15.3797" y2="12.1793" layer="30"/>
<rectangle x1="16.2687" y1="12.0015" x2="17.5133" y2="12.1793" layer="30"/>
<rectangle x1="17.8689" y1="12.0015" x2="19.1135" y2="12.1793" layer="30"/>
<rectangle x1="2.5781" y1="12.1793" x2="2.9337" y2="12.3571" layer="30"/>
<rectangle x1="3.4671" y1="12.1793" x2="4.7117" y2="12.3571" layer="30"/>
<rectangle x1="6.1341" y1="12.1793" x2="7.5565" y2="12.3571" layer="30"/>
<rectangle x1="13.7795" y1="12.1793" x2="15.2019" y2="12.3571" layer="30"/>
<rectangle x1="16.4465" y1="12.1793" x2="17.6911" y2="12.3571" layer="30"/>
<rectangle x1="18.0467" y1="12.1793" x2="19.1135" y2="12.3571" layer="30"/>
<rectangle x1="3.6449" y1="12.3571" x2="4.3561" y2="12.5349" layer="30"/>
<rectangle x1="6.3119" y1="12.3571" x2="7.5565" y2="12.5349" layer="30"/>
<rectangle x1="13.6017" y1="12.3571" x2="15.0241" y2="12.5349" layer="30"/>
<rectangle x1="16.6243" y1="12.3571" x2="17.8689" y2="12.5349" layer="30"/>
<rectangle x1="3.8227" y1="12.5349" x2="4.0005" y2="12.7127" layer="30"/>
<rectangle x1="6.3119" y1="12.5349" x2="7.5565" y2="12.7127" layer="30"/>
<rectangle x1="13.6017" y1="12.5349" x2="14.8463" y2="12.7127" layer="30"/>
<rectangle x1="16.8021" y1="12.5349" x2="17.6911" y2="12.7127" layer="30"/>
<rectangle x1="6.1341" y1="12.7127" x2="7.5565" y2="12.8905" layer="30"/>
<rectangle x1="13.6017" y1="12.7127" x2="14.8463" y2="12.8905" layer="30"/>
<rectangle x1="17.1577" y1="12.7127" x2="17.5133" y2="12.8905" layer="30"/>
<rectangle x1="6.1341" y1="12.8905" x2="7.5565" y2="13.0683" layer="30"/>
<rectangle x1="13.6017" y1="12.8905" x2="15.0241" y2="13.0683" layer="30"/>
<rectangle x1="6.1341" y1="13.0683" x2="7.5565" y2="13.2461" layer="30"/>
<rectangle x1="13.6017" y1="13.0683" x2="15.0241" y2="13.2461" layer="30"/>
<rectangle x1="4.5339" y1="13.2461" x2="5.0673" y2="13.4239" layer="30"/>
<rectangle x1="5.2451" y1="13.2461" x2="7.3787" y2="13.4239" layer="30"/>
<rectangle x1="13.7795" y1="13.2461" x2="15.3797" y2="13.4239" layer="30"/>
<rectangle x1="4.1783" y1="13.4239" x2="7.2009" y2="13.6017" layer="30"/>
<rectangle x1="7.7343" y1="13.4239" x2="8.6233" y2="13.6017" layer="30"/>
<rectangle x1="13.7795" y1="13.4239" x2="16.6243" y2="13.6017" layer="30"/>
<rectangle x1="4.0005" y1="13.6017" x2="7.2009" y2="13.7795" layer="30"/>
<rectangle x1="7.5565" y1="13.6017" x2="9.1567" y2="13.7795" layer="30"/>
<rectangle x1="12.3571" y1="13.6017" x2="13.2461" y2="13.7795" layer="30"/>
<rectangle x1="13.7795" y1="13.6017" x2="16.9799" y2="13.7795" layer="30"/>
<rectangle x1="4.0005" y1="13.7795" x2="9.5123" y2="13.9573" layer="30"/>
<rectangle x1="11.6459" y1="13.7795" x2="13.6017" y2="13.9573" layer="30"/>
<rectangle x1="13.7795" y1="13.7795" x2="16.9799" y2="13.9573" layer="30"/>
<rectangle x1="4.0005" y1="13.9573" x2="9.6901" y2="14.1351" layer="30"/>
<rectangle x1="11.4681" y1="13.9573" x2="17.1577" y2="14.1351" layer="30"/>
<rectangle x1="5.6007" y1="14.1351" x2="10.0457" y2="14.3129" layer="30"/>
<rectangle x1="11.1125" y1="14.1351" x2="16.9799" y2="14.3129" layer="30"/>
<rectangle x1="5.2451" y1="14.3129" x2="10.2235" y2="14.4907" layer="30"/>
<rectangle x1="10.9347" y1="14.3129" x2="15.5575" y2="14.4907" layer="30"/>
<rectangle x1="16.2687" y1="14.3129" x2="16.8021" y2="14.4907" layer="30"/>
<rectangle x1="3.8227" y1="14.4907" x2="10.2235" y2="14.6685" layer="30"/>
<rectangle x1="10.7569" y1="14.4907" x2="15.9131" y2="14.6685" layer="30"/>
<rectangle x1="3.6449" y1="14.6685" x2="10.4013" y2="14.8463" layer="30"/>
<rectangle x1="10.7569" y1="14.6685" x2="17.3355" y2="14.8463" layer="30"/>
<rectangle x1="3.6449" y1="14.8463" x2="8.0899" y2="15.0241" layer="30"/>
<rectangle x1="8.6233" y1="14.8463" x2="10.4013" y2="15.0241" layer="30"/>
<rectangle x1="10.5791" y1="14.8463" x2="17.5133" y2="15.0241" layer="30"/>
<rectangle x1="3.4671" y1="15.0241" x2="5.7785" y2="15.2019" layer="30"/>
<rectangle x1="6.1341" y1="15.0241" x2="7.7343" y2="15.2019" layer="30"/>
<rectangle x1="8.9789" y1="15.0241" x2="10.4013" y2="15.2019" layer="30"/>
<rectangle x1="10.5791" y1="15.0241" x2="12.1793" y2="15.2019" layer="30"/>
<rectangle x1="13.2461" y1="15.0241" x2="17.5133" y2="15.2019" layer="30"/>
<rectangle x1="3.6449" y1="15.2019" x2="5.4229" y2="15.3797" layer="30"/>
<rectangle x1="5.7785" y1="15.2019" x2="7.7343" y2="15.3797" layer="30"/>
<rectangle x1="9.3345" y1="15.2019" x2="12.0015" y2="15.3797" layer="30"/>
<rectangle x1="13.4239" y1="15.2019" x2="15.2019" y2="15.3797" layer="30"/>
<rectangle x1="15.5575" y1="15.2019" x2="17.5133" y2="15.3797" layer="30"/>
<rectangle x1="3.8227" y1="15.3797" x2="5.2451" y2="15.5575" layer="30"/>
<rectangle x1="5.7785" y1="15.3797" x2="6.6675" y2="15.5575" layer="30"/>
<rectangle x1="6.8453" y1="15.3797" x2="7.7343" y2="15.5575" layer="30"/>
<rectangle x1="9.3345" y1="15.3797" x2="11.8237" y2="15.5575" layer="30"/>
<rectangle x1="13.4239" y1="15.3797" x2="15.3797" y2="15.5575" layer="30"/>
<rectangle x1="15.7353" y1="15.3797" x2="17.5133" y2="15.5575" layer="30"/>
<rectangle x1="4.0005" y1="15.5575" x2="4.8895" y2="15.7353" layer="30"/>
<rectangle x1="5.6007" y1="15.5575" x2="6.6675" y2="15.7353" layer="30"/>
<rectangle x1="6.8453" y1="15.5575" x2="7.7343" y2="15.7353" layer="30"/>
<rectangle x1="9.3345" y1="15.5575" x2="11.8237" y2="15.7353" layer="30"/>
<rectangle x1="13.4239" y1="15.5575" x2="14.3129" y2="15.7353" layer="30"/>
<rectangle x1="14.4907" y1="15.5575" x2="15.3797" y2="15.7353" layer="30"/>
<rectangle x1="15.9131" y1="15.5575" x2="17.3355" y2="15.7353" layer="30"/>
<rectangle x1="4.1783" y1="15.7353" x2="4.5339" y2="15.9131" layer="30"/>
<rectangle x1="5.4229" y1="15.7353" x2="6.4897" y2="15.9131" layer="30"/>
<rectangle x1="6.8453" y1="15.7353" x2="7.7343" y2="15.9131" layer="30"/>
<rectangle x1="9.3345" y1="15.7353" x2="11.8237" y2="15.9131" layer="30"/>
<rectangle x1="13.4239" y1="15.7353" x2="14.3129" y2="15.9131" layer="30"/>
<rectangle x1="14.4907" y1="15.7353" x2="15.5575" y2="15.9131" layer="30"/>
<rectangle x1="16.2687" y1="15.7353" x2="17.1577" y2="15.9131" layer="30"/>
<rectangle x1="4.8895" y1="15.9131" x2="5.0673" y2="16.0909" layer="30"/>
<rectangle x1="5.4229" y1="15.9131" x2="6.4897" y2="16.0909" layer="30"/>
<rectangle x1="6.8453" y1="15.9131" x2="7.7343" y2="16.0909" layer="30"/>
<rectangle x1="9.1567" y1="15.9131" x2="12.0015" y2="16.0909" layer="30"/>
<rectangle x1="13.4239" y1="15.9131" x2="14.3129" y2="16.0909" layer="30"/>
<rectangle x1="14.4907" y1="15.9131" x2="15.5575" y2="16.0909" layer="30"/>
<rectangle x1="16.4465" y1="15.9131" x2="17.1577" y2="16.0909" layer="30"/>
<rectangle x1="3.6449" y1="16.0909" x2="4.8895" y2="16.2687" layer="30"/>
<rectangle x1="5.2451" y1="16.0909" x2="6.4897" y2="16.2687" layer="30"/>
<rectangle x1="6.8453" y1="16.0909" x2="7.7343" y2="16.2687" layer="30"/>
<rectangle x1="8.9789" y1="16.0909" x2="12.1793" y2="16.2687" layer="30"/>
<rectangle x1="13.4239" y1="16.0909" x2="14.3129" y2="16.2687" layer="30"/>
<rectangle x1="14.6685" y1="16.0909" x2="15.9131" y2="16.2687" layer="30"/>
<rectangle x1="16.0909" y1="16.0909" x2="16.8021" y2="16.2687" layer="30"/>
<rectangle x1="16.9799" y1="16.0909" x2="17.3355" y2="16.2687" layer="30"/>
<rectangle x1="3.6449" y1="16.2687" x2="4.8895" y2="16.4465" layer="30"/>
<rectangle x1="5.2451" y1="16.2687" x2="6.4897" y2="16.4465" layer="30"/>
<rectangle x1="6.8453" y1="16.2687" x2="7.7343" y2="16.4465" layer="30"/>
<rectangle x1="8.8011" y1="16.2687" x2="12.3571" y2="16.4465" layer="30"/>
<rectangle x1="13.4239" y1="16.2687" x2="14.4907" y2="16.4465" layer="30"/>
<rectangle x1="14.6685" y1="16.2687" x2="15.9131" y2="16.4465" layer="30"/>
<rectangle x1="16.0909" y1="16.2687" x2="17.5133" y2="16.4465" layer="30"/>
<rectangle x1="3.6449" y1="16.4465" x2="4.8895" y2="16.6243" layer="30"/>
<rectangle x1="5.0673" y1="16.4465" x2="6.4897" y2="16.6243" layer="30"/>
<rectangle x1="6.8453" y1="16.4465" x2="7.5565" y2="16.6243" layer="30"/>
<rectangle x1="8.6233" y1="16.4465" x2="12.5349" y2="16.6243" layer="30"/>
<rectangle x1="13.4239" y1="16.4465" x2="14.4907" y2="16.6243" layer="30"/>
<rectangle x1="14.6685" y1="16.4465" x2="15.9131" y2="16.6243" layer="30"/>
<rectangle x1="16.2687" y1="16.4465" x2="17.5133" y2="16.6243" layer="30"/>
<rectangle x1="3.6449" y1="16.6243" x2="4.8895" y2="16.8021" layer="30"/>
<rectangle x1="5.0673" y1="16.6243" x2="6.4897" y2="16.8021" layer="30"/>
<rectangle x1="6.8453" y1="16.6243" x2="7.5565" y2="16.8021" layer="30"/>
<rectangle x1="8.6233" y1="16.6243" x2="12.5349" y2="16.8021" layer="30"/>
<rectangle x1="13.4239" y1="16.6243" x2="14.3129" y2="16.8021" layer="30"/>
<rectangle x1="14.6685" y1="16.6243" x2="15.9131" y2="16.8021" layer="30"/>
<rectangle x1="16.2687" y1="16.6243" x2="17.5133" y2="16.8021" layer="30"/>
<rectangle x1="3.6449" y1="16.8021" x2="4.8895" y2="16.9799" layer="30"/>
<rectangle x1="5.2451" y1="16.8021" x2="6.4897" y2="16.9799" layer="30"/>
<rectangle x1="6.8453" y1="16.8021" x2="7.3787" y2="16.9799" layer="30"/>
<rectangle x1="8.4455" y1="16.8021" x2="9.5123" y2="16.9799" layer="30"/>
<rectangle x1="9.6901" y1="16.8021" x2="12.7127" y2="16.9799" layer="30"/>
<rectangle x1="13.6017" y1="16.8021" x2="14.3129" y2="16.9799" layer="30"/>
<rectangle x1="14.4907" y1="16.8021" x2="15.9131" y2="16.9799" layer="30"/>
<rectangle x1="16.2687" y1="16.8021" x2="17.5133" y2="16.9799" layer="30"/>
<rectangle x1="3.8227" y1="16.9799" x2="4.8895" y2="17.1577" layer="30"/>
<rectangle x1="5.4229" y1="16.9799" x2="6.4897" y2="17.1577" layer="30"/>
<rectangle x1="8.2677" y1="16.9799" x2="9.3345" y2="17.1577" layer="30"/>
<rectangle x1="9.6901" y1="16.9799" x2="10.4013" y2="17.1577" layer="30"/>
<rectangle x1="10.5791" y1="16.9799" x2="11.4681" y2="17.1577" layer="30"/>
<rectangle x1="11.6459" y1="16.9799" x2="12.7127" y2="17.1577" layer="30"/>
<rectangle x1="14.6685" y1="16.9799" x2="15.9131" y2="17.1577" layer="30"/>
<rectangle x1="16.2687" y1="16.9799" x2="17.3355" y2="17.1577" layer="30"/>
<rectangle x1="3.8227" y1="17.1577" x2="4.8895" y2="17.3355" layer="30"/>
<rectangle x1="5.4229" y1="17.1577" x2="6.3119" y2="17.3355" layer="30"/>
<rectangle x1="8.2677" y1="17.1577" x2="9.3345" y2="17.3355" layer="30"/>
<rectangle x1="9.5123" y1="17.1577" x2="10.4013" y2="17.3355" layer="30"/>
<rectangle x1="10.5791" y1="17.1577" x2="11.4681" y2="17.3355" layer="30"/>
<rectangle x1="11.8237" y1="17.1577" x2="12.7127" y2="17.3355" layer="30"/>
<rectangle x1="14.6685" y1="17.1577" x2="15.9131" y2="17.3355" layer="30"/>
<rectangle x1="16.2687" y1="17.1577" x2="17.3355" y2="17.3355" layer="30"/>
<rectangle x1="5.7785" y1="17.3355" x2="5.9563" y2="17.5133" layer="30"/>
<rectangle x1="8.2677" y1="17.3355" x2="8.9789" y2="17.5133" layer="30"/>
<rectangle x1="9.3345" y1="17.3355" x2="10.4013" y2="17.5133" layer="30"/>
<rectangle x1="10.5791" y1="17.3355" x2="11.6459" y2="17.5133" layer="30"/>
<rectangle x1="12.0015" y1="17.3355" x2="12.7127" y2="17.5133" layer="30"/>
<rectangle x1="14.8463" y1="17.3355" x2="15.5575" y2="17.5133" layer="30"/>
<rectangle x1="16.2687" y1="17.3355" x2="17.3355" y2="17.5133" layer="30"/>
<rectangle x1="8.4455" y1="17.5133" x2="8.8011" y2="17.6911" layer="30"/>
<rectangle x1="9.3345" y1="17.5133" x2="10.4013" y2="17.6911" layer="30"/>
<rectangle x1="10.5791" y1="17.5133" x2="11.8237" y2="17.6911" layer="30"/>
<rectangle x1="12.1793" y1="17.5133" x2="12.5349" y2="17.6911" layer="30"/>
<rectangle x1="15.0241" y1="17.5133" x2="15.3797" y2="17.6911" layer="30"/>
<rectangle x1="16.2687" y1="17.5133" x2="16.6243" y2="17.6911" layer="30"/>
<rectangle x1="8.9789" y1="17.6911" x2="10.4013" y2="17.8689" layer="30"/>
<rectangle x1="10.5791" y1="17.6911" x2="12.0015" y2="17.8689" layer="30"/>
<rectangle x1="8.8011" y1="17.8689" x2="10.4013" y2="18.0467" layer="30"/>
<rectangle x1="10.5791" y1="17.8689" x2="12.1793" y2="18.0467" layer="30"/>
<rectangle x1="8.6233" y1="18.0467" x2="10.2235" y2="18.2245" layer="30"/>
<rectangle x1="10.7569" y1="18.0467" x2="12.5349" y2="18.2245" layer="30"/>
<rectangle x1="8.6233" y1="18.2245" x2="10.2235" y2="18.4023" layer="30"/>
<rectangle x1="10.7569" y1="18.2245" x2="12.5349" y2="18.4023" layer="30"/>
<rectangle x1="8.6233" y1="18.4023" x2="10.0457" y2="18.5801" layer="30"/>
<rectangle x1="10.4013" y1="18.4023" x2="10.5791" y2="18.5801" layer="30"/>
<rectangle x1="10.9347" y1="18.4023" x2="12.5349" y2="18.5801" layer="30"/>
<rectangle x1="8.6233" y1="18.5801" x2="10.0457" y2="18.7579" layer="30"/>
<rectangle x1="10.4013" y1="18.5801" x2="10.7569" y2="18.7579" layer="30"/>
<rectangle x1="10.9347" y1="18.5801" x2="12.3571" y2="18.7579" layer="30"/>
<rectangle x1="8.8011" y1="18.7579" x2="9.8679" y2="18.9357" layer="30"/>
<rectangle x1="10.2235" y1="18.7579" x2="10.7569" y2="18.9357" layer="30"/>
<rectangle x1="11.1125" y1="18.7579" x2="12.3571" y2="18.9357" layer="30"/>
<rectangle x1="9.8679" y1="18.9357" x2="11.1125" y2="19.1135" layer="30"/>
<rectangle x1="9.6901" y1="19.1135" x2="11.4681" y2="19.2913" layer="30"/>
<rectangle x1="9.6901" y1="19.2913" x2="11.4681" y2="19.4691" layer="30"/>
<rectangle x1="9.6901" y1="19.4691" x2="11.4681" y2="19.6469" layer="30"/>
<rectangle x1="9.6901" y1="19.6469" x2="11.2903" y2="19.8247" layer="30"/>
<rectangle x1="10.2235" y1="19.8247" x2="10.7569" y2="20.0025" layer="30"/>
<rectangle x1="10.4013" y1="20.0025" x2="10.5791" y2="20.1803" layer="30"/>
</plain>
<libraries>
<library name="SparkFun-Connectors">
<description><h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<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="USB-B-MICRO-SMD_V03">
<text x="-4.66" y="5.96" size="0.3048" layer="51">PCB Front</text>
<wire x1="-3" y1="5.6" x2="-2.3" y2="5.3" width="0.08" layer="51"/>
<wire x1="-2.3" y1="5.3" x2="-2.4" y2="5.5" width="0.08" layer="51"/>
<wire x1="-2.3" y1="5.3" x2="-2.5" y2="5.2" width="0.08" layer="51"/>
<text x="-1.27" y="5.969" size="0.4064" layer="25">>NAME</text>
<text x="-1.27" y="5.461" size="0.4064" layer="27">>VALUE</text>
<smd name="D+1" x="2.7" y="0" dx="0.4" dy="1.4" layer="1" rot="R90"/>
<smd name="D-1" x="2.7" y="0.65" dx="0.4" dy="1.4" layer="1" rot="R90"/>
<smd name="VBUS1" x="2.7" y="1.3" dx="0.4" dy="1.4" layer="1" rot="R90"/>
<smd name="ID1" x="2.7" y="-0.65" dx="0.4" dy="1.4" layer="1" rot="R90"/>
<smd name="GND1" x="2.7" y="-1.3" dx="0.4" dy="1.4" layer="1" rot="R90"/>
<rectangle x1="-0.75" y1="2.784" x2="0.75" y2="4.584" layer="31"/>
<rectangle x1="-0.35" y1="-0.75" x2="0.35" y2="0.75" layer="31"/>
<rectangle x1="-0.75" y1="-4.584" x2="0.75" y2="-2.784" layer="31"/>
<wire x1="-2.15" y1="3.9" x2="-2.15" y2="-3.9" width="0.127" layer="49"/>
<wire x1="2.85" y1="3.9" x2="2.85" y2="-3.9" width="0.127" layer="49"/>
<wire x1="2.85" y1="3.9" x2="-2.15" y2="3.9" width="0.127" layer="49"/>
<wire x1="2.85" y1="-3.9" x2="-2.15" y2="-3.9" width="0.127" layer="49"/>
<wire x1="2.981959375" y1="3.99288125" x2="2" y2="3.99288125" width="0.3048" layer="21"/>
<wire x1="2" y1="3.99288125" x2="2" y2="4" width="0.3048" layer="21"/>
<wire x1="3" y1="4" x2="3" y2="3" width="0.3048" layer="21"/>
<wire x1="2" y1="-4" x2="3" y2="-4" width="0.3048" layer="21"/>
<wire x1="3" y1="-4" x2="3" y2="-3" width="0.3048" layer="21"/>
<wire x1="-1" y1="4" x2="-2" y2="4" width="0.3048" layer="21"/>
<wire x1="-1" y1="-4" x2="-2" y2="-4" width="0.3048" layer="21"/>
<rectangle x1="-0.85" y1="2.684" x2="0.85" y2="4.684" layer="29"/>
<rectangle x1="-0.85" y1="-4.684" x2="0.85" y2="-2.684" layer="29"/>
<rectangle x1="-0.85" y1="-1.35" x2="0.85" y2="1.35" layer="29"/>
<smd name="SHIELD1" x="0" y="3.7" dx="1.8" dy="1.5" layer="1" rot="R90" stop="no" cream="no"/>
<smd name="SHIELD3" x="0" y="0" dx="2.5" dy="1.5" layer="1" rot="R90" stop="no" cream="no"/>
<smd name="SHIELD2" x="0" y="-3.7" dx="1.8" dy="1.5" layer="1" rot="R90" stop="no" cream="no"/>
</package>
</packages>
</library>
<library name="SparkFun-DigitalIC">
<description><h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find all manner of digital ICs- microcontrollers, memory chips, logic chips, FPGAs, 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="SO08-EIAJ">
<description>Fits EIAJ packages (wide version of the SOIC-8).</description>
<wire x1="-2.362" y1="-2.565" x2="2.362" y2="-2.565" width="0.1524" layer="51"/>
<wire x1="2.362" y1="-2.565" x2="2.362" y2="2.5396" width="0.1524" layer="21"/>
<wire x1="2.362" y1="2.5396" x2="-2.362" y2="2.5396" width="0.1524" layer="51"/>
<wire x1="-2.362" y1="2.5396" x2="-2.362" y2="-2.565" width="0.1524" layer="21"/>
<circle x="-1.8034" y="-1.7526" radius="0.1436" width="0.2032" layer="21"/>
<smd name="1" x="-1.905" y="-3.3782" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="2" x="-0.635" y="-3.3782" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="3" x="0.635" y="-3.3782" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="4" x="1.905" y="-3.3782" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="5" x="1.905" y="3.3528" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="6" x="0.635" y="3.3528" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="7" x="-0.635" y="3.3528" dx="0.6096" dy="2.2098" layer="1"/>
<smd name="8" x="-1.905" y="3.3528" dx="0.6096" dy="2.2098" layer="1"/>
<text x="-1.27" y="-1.397" size="0.4064" layer="27">>VALUE</text>
<text x="-1.27" y="-0.762" size="0.4064" layer="25">>NAME</text>
<rectangle x1="-2.0828" y1="-3.6322" x2="-1.7272" y2="-2.6162" layer="51"/>
<rectangle x1="-0.8128" y1="-3.6322" x2="-0.4572" y2="-2.6162" layer="51"/>
<rectangle x1="0.4572" y1="-3.6322" x2="0.8128" y2="-2.6162" layer="51"/>
<rectangle x1="1.7272" y1="-3.6322" x2="2.0828" y2="-2.6162" layer="51"/>
<rectangle x1="-2.0828" y1="2.5908" x2="-1.7272" y2="3.6068" layer="51"/>
<rectangle x1="-0.8128" y1="2.5908" x2="-0.4572" y2="3.6068" layer="51"/>
<rectangle x1="0.4572" y1="2.5908" x2="0.8128" y2="3.6068" layer="51"/>
<rectangle x1="1.7272" y1="2.5908" x2="2.0828" y2="3.6068" layer="51"/>
</package>
</packages>
</library>
<library name="eagle-ltspice">
<description>Default symbols for import LTspice schematics<p>
2012-10-29 alf@cadsoft.de<br></description>
<packages>
<package name="R0603">
<description><b>RESISTOR</b></description>
<wire x1="-0.432" y1="-0.356" x2="0.432" y2="-0.356" width="0.1524" layer="51"/>
<wire x1="0.432" y1="0.356" x2="-0.432" y2="0.356" width="0.1524" layer="51"/>
<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
<rectangle x1="0.4318" y1="-0.4318" x2="0.8382" y2="0.4318" layer="51"/>
<rectangle x1="-0.8382" y1="-0.4318" x2="-0.4318" y2="0.4318" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
<smd name="1" x="-0.85" y="0" dx="1" dy="1.1" layer="1"/>
<smd name="2" x="0.85" y="0" dx="1" dy="1.1" layer="1"/>
<text x="-0.635" y="0.635" size="1.27" layer="25">>NAME</text>
<text x="-0.635" y="-1.905" size="1.27" layer="27">>VALUE</text>
</package>
<package name="C0603">
<description><b>CAPACITOR</b></description>
<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="-0.356" y1="0.432" x2="0.356" y2="0.432" width="0.1016" layer="51"/>
<wire x1="-0.356" y1="-0.419" x2="0.356" y2="-0.419" width="0.1016" layer="51"/>
<rectangle x1="-0.8382" y1="-0.4699" x2="-0.3381" y2="0.4801" layer="51"/>
<rectangle x1="0.3302" y1="-0.4699" x2="0.8303" y2="0.4801" layer="51"/>
<rectangle x1="-0.1999" y1="-0.3" x2="0.1999" y2="0.3" layer="35"/>
<smd name="1" x="-0.85" y="0" dx="1.1" dy="1" layer="1"/>
<smd name="2" x="0.85" y="0" dx="1.1" dy="1" layer="1"/>
<text x="-0.635" y="0.635" size="1.27" layer="25">>NAME</text>
<text x="-0.635" y="-1.905" size="1.27" layer="27">>VALUE</text>
</package>
<package name="R0402">
<description><b>RESISTOR</b></description>
<wire x1="-0.245" y1="0.224" x2="0.245" y2="0.224" width="0.1524" layer="51"/>
<wire x1="0.245" y1="-0.224" x2="-0.245" y2="-0.224" width="0.1524" layer="51"/>
<wire x1="-1.473" y1="0.483" x2="1.473" y2="0.483" width="0.0508" layer="39"/>
<wire x1="1.473" y1="0.483" x2="1.473" y2="-0.483" width="0.0508" layer="39"/>
<wire x1="1.473" y1="-0.483" x2="-1.473" y2="-0.483" width="0.0508" layer="39"/>
<wire x1="-1.473" y1="-0.483" x2="-1.473" y2="0.483" width="0.0508" layer="39"/>
<rectangle x1="-0.554" y1="-0.3048" x2="-0.254" y2="0.2951" layer="51"/>
<rectangle x1="0.2588" y1="-0.3048" x2="0.5588" y2="0.2951" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
<smd name="1" x="-0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
<smd name="2" x="0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
<text x="-0.635" y="0.635" size="1.27" layer="25">>NAME</text>
<text x="-0.635" y="-1.905" size="1.27" layer="27">>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="TACTILE-SWITCH-1101NE">
<description>SparkFun SKU# COM-08229</description>
<wire x1="-3" y1="1.1" x2="-3" y2="-1.1" width="0.127" layer="51"/>
<wire x1="3" y1="1.1" x2="3" y2="-1.1" width="0.127" layer="51"/>
<wire x1="-2.75" y1="1.75" x2="-3" y2="1.5" width="0.2032" layer="21" curve="90"/>
<wire x1="-2.75" y1="1.75" x2="2.75" y2="1.75" width="0.2032" layer="21"/>
<wire x1="2.75" y1="1.75" x2="3" y2="1.5" width="0.2032" layer="21" curve="-90"/>
<wire x1="3" y1="-1.5" x2="2.75" y2="-1.75" width="0.2032" layer="21" curve="-90"/>
<wire x1="2.75" y1="-1.75" x2="-2.75" y2="-1.75" width="0.2032" layer="21"/>
<wire x1="-3" y1="-1.5" x2="-2.75" y2="-1.75" width="0.2032" layer="21" curve="90"/>
<wire x1="-3" y1="-1.5" x2="-3" y2="-1.1" width="0.2032" layer="21"/>
<wire x1="-3" y1="1.1" x2="-3" y2="1.5" width="0.2032" layer="21"/>
<wire x1="3" y1="1.1" x2="3" y2="1.5" width="0.2032" layer="21"/>
<wire x1="3" y1="-1.5" x2="3" y2="-1.1" width="0.2032" layer="21"/>
<wire x1="-1.5" y1="0.75" x2="1.5" y2="0.75" width="0.2032" layer="21"/>
<wire x1="1.5" y1="-0.75" x2="-1.5" y2="-0.75" width="0.2032" layer="21"/>
<wire x1="-1.5" y1="-0.75" x2="-1.5" y2="0.75" width="0.2032" layer="21"/>
<wire x1="1.5" y1="-0.75" x2="1.5" y2="0.75" width="0.2032" layer="21"/>
<wire x1="-2" y1="0" x2="-1" y2="0" width="0.127" layer="51"/>
<wire x1="-1" y1="0" x2="0.1" y2="0.5" width="0.127" layer="51"/>
<wire x1="0.3" y1="0" x2="2" y2="0" width="0.127" layer="51"/>
<smd name="1" x="-3.15" y="0" dx="2.3" dy="1.6" layer="1" rot="R180"/>
<smd name="2" x="3.15" y="0" dx="2.3" dy="1.6" layer="1" rot="R180"/>
<text x="-3" y="2" size="0.762" layer="25">>NAME</text>
<text x="-3" y="-2.7" size="0.762" layer="27">>VALUE</text>
</package>
</packages>
</library>
<library name="SparkFun-DiscreteSemi">
<description><h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find discrete semiconductors- transistors, diodes, TRIACs, optoisolators, 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="SOD-323">
<wire x1="-0.9" y1="0.65" x2="-0.5" y2="0.65" width="0.2032" layer="21"/>
<wire x1="-0.5" y1="0.65" x2="0.9" y2="0.65" width="0.2032" layer="21"/>
<wire x1="-0.9" y1="-0.65" x2="-0.5" y2="-0.65" width="0.2032" layer="21"/>
<wire x1="-0.5" y1="-0.65" x2="0.9" y2="-0.65" width="0.2032" layer="21"/>
<wire x1="-0.5" y1="0.65" x2="-0.5" y2="-0.65" width="0.2032" layer="21"/>
<smd name="C" x="-1.15" y="0" dx="0.63" dy="0.83" layer="1"/>
<smd name="A" x="1.15" y="0" dx="0.63" dy="0.83" layer="1"/>
<text x="-0.889" y="1.016" size="0.4064" layer="25">>NAME</text>
<text x="-1.016" y="-1.397" size="0.4064" layer="27">>VALUE</text>
</package>
</packages>
</library>
<library name="mylib">
<packages>
<package name="FC0H104ZFTBR24">
<wire x1="-5.4" y1="0.1" x2="-5.4" y2="5.4" width="0.127

repository: ADiea/rgbWearable

repo_name: ADiea/rgbWearable

extension: brd