text:
/*
  Scheme in [Go 1.11] by SUZUKI Hisao (H30.8/5 - H30.9/30).

  The Reader type and other portions are derived from
  Nukata Lisp in Go (https://github.com/nukata/lisp-in-go).
*/
package scheme

import (
	"errors"
	"fmt"
	"io"
	"os"
	"reflect"
	"strconv"
	"strings"
	"sync"
)

const Version = 0.51

type Any = interface{}

// EofToken is a token which represents the end of file.
var EofToken = errors.New("#end-of-file")

// VoidToken is a token which represents nothing.
// (define v e) returns VoidToken.
var VoidToken = errors.New("#void")

// EvalError represents an error in evaluation.
type EvalError struct {
	Message string
}

// NewEvalError constructs a new EvalError.
func NewEvalError(msg string, x Any) *EvalError {
	return &EvalError{msg + ": " + Str(x)}
}

// err.Error() returns a textual representation of err.
func (err *EvalError) Error() string {
	s := "EvalError: " + err.Message
	return s
}

//----------------------------------------------------------------------

// Cell represents a cons cell.
// &Cell{car, cdr} works as the "cons" operation.
type Cell struct {
	Car Any
	Cdr Any
}

// Nil represents the empty list ().
var Nil *Cell = nil

// j.String() returns a textual representation of the list j.
func (j *Cell) String() string {
	return Str(j)
}

// j.Head() returns (car j) as *Cell.
func (j *Cell) Head() *Cell {
	return j.Car.(*Cell)
}

// j.Tail() returns (cdr j) as *Cell.
func (j *Cell) Tail() *Cell {
	return j.Cdr.(*Cell)
}

func __(j ...Any) *Cell {
	var result Any = Nil
	p := &result
	for _, v := range j {
		x := &Cell{v, Nil}
		*p = x
		p = &x.Cdr
	}
	return result.(*Cell)
}

// List(e1, ..., eN Any) builds a list (e1 ... eN) as *Cell.
var List = __

// (a b c).FoldL(x, fn) returns fn(fn(fn(x, a), b), c).
func (j *Cell) FoldL(x Any, fn func(Any, Any) Any) Any {
	for j != Nil {
		x = fn(x, j.Car)
		j = j.Tail()
	}
	return x
}

// (a b c d).CompareAll(fn) returns fn(a, b) && fn(b, c) && fn(c, d).
func (j *Cell) CompareAll(fn func(Any, Any) bool) bool {
	x := j.Car
	j = j.Tail()
	for j != Nil {
		y := j.Car
		if !fn(x, y) {
			return false
		}
		x = y
		j = j.Tail()
	}
	return true
}

// (a b c d).Reverse() returns (d c b a).
func (j *Cell) Reverse() *Cell {
	result := Nil
	for j != Nil {
		result = &Cell{j.Car, result}
		j = j.Tail()
	}
	return result
}

//----------------------------------------------------------------------

// Sym represents a symbol or a keyword.
// &Sym{name, false} constructs a symbol which is not interned yet.
type Sym struct {
	Name      string
	IsKeyword bool
}

// symbols is the table of interned symbols.
var symbols = make(map[string]*Sym)

// symLock is the exclusive lock for the table.
var symLock sync.RWMutex

// NewSym constructs an interned symbol for name.
func NewSym(name string) *Sym {
	return NewSym2(name, false)
}

// NewSym2 constructs an interned symbol (or a keyword
// if iskeyword is true on its first contruction) for name.
func NewSym2(name string, isKeyword bool) *Sym {
	symLock.Lock()
	sym, ok := symbols[name]
	if !ok {
		sym = &Sym{name, isKeyword}
		symbols[name] = sym
	}
	symLock.Unlock()
	return sym
}

// IsInterned returns true if sym is interned.
func (sym *Sym) IsInterned() bool {
	symLock.RLock()
	s, ok := symbols[sym.Name]
	symLock.RUnlock()
	return ok && s == sym
}

// sym.String() returns a textual representation of sym.
func (sym *Sym) String() string {
	if sym.IsInterned() {
		return sym.Name
	} else {
		return "#:" + sym.Name
	}
}

// Expression keywords

var And_ = NewSym2("and", true)
var Arrow_ = NewSym2("=>", true)
var Begin_ = NewSym2("begin", true)
var Case_ = NewSym2("case", true)
var Cond_ = NewSym2("cond", true)
var Define_ = NewSym2("define", true)
var Delay_ = NewSym2("delay", true)
var Do_ = NewSym2("do", true)
var Else_ = NewSym2("else", true)
var If_ = NewSym2("if", true)
var Lambda_ = NewSym2("lambda", true)
var Let_ = NewSym2("let", true)
var Letrec_ = NewSym2("letrec", true)
var LetStar_ = NewSym2("let*", true)
var Or_ = NewSym2("or", true)
var Quasiquote_ = NewSym2("quasiquote", true)
var Quote_ = NewSym2("quote", true)
var SetQ_ = NewSym2("set!", true)
var Unquote_ = NewSym2("unquote", true)
var Unquote_splicing_ = NewSym2("unquote-splicing", true)

//----------------------------------------------------------------------

// Globals represents a global environment.
// An environment will be repsensented as the list
// ((symbol1 . value1) ... (symbolN . valueN) globals)
// where globals is an instance of Globals.
type Globals struct {
	Map   map[*Sym]Any
	Mutex sync.RWMutex
}

// gl.String() returns "#N-symbols" where N is the number of symbols in gl.
func (gl *Globals) String() string {
	return fmt.Sprintf("#%d-symbols", len(gl.Map))
}

// GetVar retrieves the value of sym from env.
func GetVar(sym *Sym, env *Cell) Any {
	j := env
	for j != Nil {
		switch x := j.Car.(type) {
		case *Cell:
			if x.Car == sym {
				return x.Cdr
			}
		case *Globals:
			x.Mutex.RLock()
			v, ok := x.Map[sym]
			x.Mutex.RUnlock()
			if ok {
				return v
			}
		default:
			panic(NewEvalError("invalid environment", env))
		}
		j = j.Tail()
	}
	panic(NewEvalError("undefined variable", sym))
}

// SetVar sets the value of sym in env to value.
func SetVar(sym *Sym, value Any, env *Cell) bool {
	j := env
	for j != Nil {
		switch x := j.Car.(type) {
		case *Cell:
			if x.Car == sym {
				x.Cdr = value
				return true
			}
		case *Globals:
			x.Mutex.Lock()
			_, ok := x.Map[sym]
			if ok {
				x.Map[sym] = value
			}
			x.Mutex.Unlock()
			if ok {
				return true
			}
		default:
			panic(NewEvalError("invalid environment", env))
		}
		j = j.Tail()
	}
	return false
}

// DefineVar defines sym as value in env.
func DefineVar(sym *Sym, value Any, env *Cell) {
	if env != Nil {
		if x, ok := env.Car.(*Globals); ok {
			x.Mutex.Lock()
			x.Map[sym] = value
			x.Mutex.Unlock()
			return
		}
	}
	panic(NewEvalError("not top level to define", sym))
}

//----------------------------------------------------------------------

// Expr represents a function which evaluates expressions to get the result.
type Expr struct {
	Parameters  Any // *Sym or *Cell
	Body        *Cell
	Environment *Cell
}

// expr.String() returns a textual representation of expr.
func (expr *Expr) String() string {
	return Str(expr)
}

// Subr represents an intrinsic subroutine.
type Subr = func(*Cell) Any

// FSubr represents an intrinsic special-form subroutine.
type FSubr = func(args, env, cont *Cell) (result Any, env2, cont2 *Cell)

// ApplyType is a singleton type for the apply function.
type ApplyType struct{}

// CallCCType is a singleton type for the call/cc function.
type CallCCType struct{}

// EvalType is a singleton type for the eval function.
type EvalType struct{}

// ContType represents a continuation as a unary function.
type ContType struct {
	Continuation *Cell
}

// cont.String() returns a textual representation of cont.
func (cont *ContType) String() string {
	return Str(cont)
}

// NewCont copies a continuation k.
func NewCont(k *Cell) *Cell {
	var result Any = Nil
	p := &result
	for j := k; j != Nil; j = j.Tail() {
		var v Any
		switch x := j.Car.(type) {
		case *ApplyCont:
			v = &ApplyCont{x.Fun, x.Args, x.Evaluated, x.Env}
		case *IfCont:
			v = x // IfCont is immutable
		case *BeginCont:
			v = &BeginCont{x.Rest, x.Env}
		case *SetQCont:
			v = x // SetExclCont is immutable
		case *DefineCont:
			v = x // DefineCont is immutable
		default:
			panic(NewEvalError("unknown continuation", x))
		}
		c := &Cell{v, Nil}
		*p = c
		p = &c.Cdr
	}
	return result.(*Cell)
}

// Continuation of (fn arg1 ... argN)
type ApplyCont struct {
	Fun       Any
	Args      *Cell
	Evaluated *Cell
	Env       *Cell
}

// Continuation of (if cond then else)
type IfCont struct {
	Rest *Cell // (then else)
	Env  *Cell
}

// Continuation of (begin e1 e2 ... eN)
type BeginCont struct {
	Rest *Cell // (e2 ... eN)
	Env  *Cell
}

// Continuation of (set! variable e)
type SetQCont struct {
	Variable *Sym
	Env      *Cell
}

// Continuation of (define variable e)
type DefineCont struct {
	Variable *Sym
	Env      *Cell
}

// A singleton value to represent no need of evaluation
var DoneEnv = &Cell{nil, nil}

//----------------------------------------------------------------------

// Eval evaluates expression in env.
// Eval will panic with an EvalError if it panics.
func Eval(expression Any, env *Cell) Any {
	var k *Cell = Nil // continuation
	defer func() {
		if err := recover(); err != nil {
			ex, ok := err.(*EvalError)
			if !ok {
				ex = &EvalError{fmt.Sprintf("%v", err)}
			}
			ex.Message += fmt.Sprintf("\n\tat %v\n%v\n", expression, k)
			panic(ex)
		}
	}()
	for {
	INNER_LOOP:
		for {
			switch x := expression.(type) {
			case *Sym:
				expression = GetVar(x, env)
				break INNER_LOOP
			case *Cell:
				xcar, xcdr := x.Car, x.Tail()
				if f, ok := xcar.(*Sym); ok && f.IsKeyword {
					switch f {
					case Quote_: // (quote e)
						expression = xcdr.Car
						break INNER_LOOP
					case If_: // (if cond then [else])
						k = &Cell{&IfCont{xcdr.Tail(), env}, k}
						expression = xcdr.Car // cond
					case Begin_: // (begin e1...)
						k = &Cell{&BeginCont{xcdr.Tail(), env}, k}
						expression = xcdr.Car // e1
					case Lambda_: // (lambda (v...) e...)
						expression = &Expr{xcdr.Car, xcdr.Tail(), env}
						break INNER_LOOP
					case SetQ_: // (set! sym val)
						sym := xcdr.Car.(*Sym)
						k = &Cell{&SetQCont{sym, env}, k}
						expression = xcdr.Tail().Car
					case Define_:
						switch s := xcdr.Car.(type) {
						case *Sym: // (define v e)
							expression = xcdr.Tail().Car
							k = &Cell{&DefineCont{s, env}, k}
						case *Cell: // (define (f param..) e...)
							fsymbol, params := s.Car.(*Sym), s.Cdr
							value := &Expr{params, xcdr.Tail(), env}
							DefineVar(fsymbol, value, env)
							expression = VoidToken
							break INNER_LOOP
						default:
							panic(NewEvalError("not definable", s))
						}
					case Quasiquote_: // (quasiquote e)
						expression = QqExpand(xcdr.Car)
					default:
						fsubr := FSubrs[f]
						expression, env, k = fsubr(xcdr, env, k)
						if env == DoneEnv {
							break INNER_LOOP
						}
					}
				} else {
					k = &Cell{&ApplyCont{nil, xcdr, Nil, env}, k}
					expression = xcar
				}
			default:
				break INNER_LOOP // numbers, strings etc.
			}
		} // end of INNER_LOOP
		for {
			if k == Nil {
				return expression
			}
			// Apply the continuation k to the expression value.
			expression, env, k = ApplyContToExp(k, expression)
			if env != DoneEnv {
				break // continue to the next OUTER LOOP
			}
		}
	}
}

// ApplyContToExp applies the continuation k to value.
// It returns the next expression, its environment and the continuation.
// If the environment is DoneEnv, the expression has been evaluated.
func ApplyContToExp(k *Cell, value Any) (Any, *Cell, *Cell) {
	switch cont := k.Car.(type) {
	case *ApplyCont:
		if cont.Fun == nil {
			cont.Fun = value
		} else {
			cont.Evaluated = &Cell{value, cont.Evaluated}
		}
		if cont.Args == Nil {
			return ApplyFunc(cont.Fun, cont.Evaluated.Reverse(), k.Tail())
		}
		expression := cont.Args.Car
		cont.Args = cont.Args.Tail()
		return expression, cont.Env, k
	case *IfCont: // (if cond then [else])
		b, ok := value.(bool)
		if ok && !b { // If cond is #f...
			tail := cont.Rest.Tail()
			if tail == Nil {
				return VoidToken, DoneEnv, k.Tail()
			} else {
				return tail.Car, cont.Env, k.Tail()
			}
		} else {
			return cont.Rest.Car, cont.Env, k.Tail()
		}
	case *BeginCont: // (begin e1 e2 ... eN)
		if cont.Rest == Nil {
			return value, DoneEnv, k.Tail()
		}
		expression := cont.Rest.Car
		cont.Rest = cont.Rest.Tail()
		return expression, cont.Env, k
	case *SetQCont: // (set! v e)
		if SetVar(cont.Variable, value, cont.Env) {
			return VoidToken, DoneEnv, k.Tail()
		}
		panic(NewEvalError("undefined variable to set", cont.Variable))
	case *DefineCont: // (define v e)
		DefineVar(cont.Variable, value, cont.Env)
		return VoidToken, DoneEnv, k.Tail()
	default:
		panic(NewEvalError("unknown continuation", cont))
	}
}

// ApplyFunc applies fun to arg with the continuation k.
// It returns the next expression, its environment and the continuation.
func ApplyFunc(fun Any, args *Cell, k *Cell) (Any, *Cell, *Cell) {
	// fmt.Printf("\n---%T-%v---%v---%v\n", fun, fun, args, k)
	for {
		switch fn := fun.(type) {
		case *Expr:
			env := PairList(fn.Parameters, args, fn.Environment)
			return &Cell{Begin_, fn.Body}, env, k
		case Subr:
			return fn(args), DoneEnv, k
		case *ApplyType: // (apply fun args)
			fun, args = args.Car, args.Tail().Head()
		case *CallCCType: // (call/cc fun)
			fun, args = args.Car, &Cell{&ContType{NewCont(k)}, Nil}
		case *ContType:
			return args.Car, DoneEnv, NewCont(fn.Continuation)
		case *EvalType: // (eval expression env)
			return args.Car, args.Tail().Head(), k
		default:
			panic(NewEvalError("unknown function", fn))
		}
	}
}

// PairList((sym1...), (val1...), env) returns ((sym1 . val1)... . env).
// PairList(sym, (val1...), env) returns ((sym . (val1...)) . env).
func PairList(symbols Any, values *Cell, env *Cell) *Cell {
	switch s := symbols.(type) {
	case *Sym:
		return &Cell{&Cell{s, values}, env}
	case *Cell:
		var result Any = Nil
		p := &result
		v := values
		for s != Nil {
			dottedPair := &Cell{s.Car.(*Sym), v.Car}
			x := &Cell{dottedPair, Nil}
			*p = x
			p = &x.Cdr
			scdr, ok := s.Cdr.(*Cell)
			if ok {
				s = scdr
				v = v.Tail()
			} else { // symbols = (v1 .. vN . vRest)
				*p = &Cell{&Cell{s.Cdr.(*Sym), v.Cdr}, env}
				return result.(*Cell)
			}
		}
		*p = env
		return result.(*Cell)
	}
	panic(NewEvalError("invalid symbol(s)", symbols))
}

//----------------------------------------------------------------------

// Str(x) returns a textual representation of Any x.
func Str(x Any) string {
	return Str2(x, true)
}

// Str2(x, quoteString) returns a textual representation of Any x.
// If quoteString is true, a string will be represented with quotes.
func Str2(x Any, quoteString bool) string {
	if s, ok := x.(string); ok {
		if quoteString {
			return strconv.Quote(s)
		} else {
			return s
		}
	} else {
		return str3(x, 0, nil)
	}
}

func str3(a Any, count int, printed map[*Cell]bool) string {
	switch x := a.(type) {
	case bool:
		if x {
			return "#t"
		} else {
			return "#f"
		}
	case *Cell:
		if x == Nil {
			return "()"
		}
		return "(" + strListBody(x, count, printed) + ")"
	case string:
		return strconv.Quote(x)
	case *Expr:
		return "#[" + str3(x.Parameters, count, printed) +
			"| " + strListBody(x.Body, count, printed) +
			"| " + str3(x.Environment, count, printed) + "]"
	case *ContType:
		return "#<" + strListBody(x.Continuation, count, printed) + ">"
	case *ApplyCont:
		return "\tapply " + str3(x.Fun, count, printed) +
			" to " + str3(x.Args, count, printed) +
			" and " + str3(x.Evaluated, count, printed) +
			" in " + str3(x.Env, count, printed) + "\n"
	case *IfCont:
		return "\tthen " + str3(x.Rest.Car, count, printed) +
			"\n\telse " + str3(x.Rest.Cdr, count, printed) +
			"\n\tin " + str3(x.Env, count, printed) + "\n"
	case *BeginCont:
		return "\tbegin " + str3(x.Rest, count, printed) +
			" in " + str3(x.Env, count, printed) + "\n"
	case *SetQCont:
		return "\tset! " + Str(x.Variable) +
			" in " + str3(x.Env, count, printed) + "\n"
	case *DefineCont:
		return "\tdefine " + Str(x.Variable) +
			" in " + str3(x.Env, count, printed) + "\n"
	case Subr:
		p := reflect.ValueOf(x).Pointer()
		name, ok := SubrToName[p]
		if ok {
			return "#" + name
		}
	}
	return fmt.Sprintf("%v", a)
}

const thresholdOfEllipsisForCircularLists = 8

func strListBody(x *Cell, count int, printed map[*Cell]bool) string {
	if printed == nil {
		printed = make(map[*Cell]bool)
	}
	s := make([]string, 0, 10)
	y := x
	for y != Nil {
		if count > thresholdOfEllipsisForCircularLists {
			s = append(s, "...") // ellipsis for a circular list
			return strings.Join(s, " ")
		} else if count > 0 {
			count++
		} else if _, ok := printed[y]; ok {
			count = 1
		} else {
			printed[y] = true
		}
		s = append(s, str3(y.Car, count, printed))
		if cdr, ok := y.Cdr.(*Cell); ok {
			y = cdr
		} else {
			s = append(s, ".")
			s = append(s, str3(y.Cdr, count, printed))
			break
		}
	}
	return strings.Join(s, " ")
}

//----------------------------------------------------------------------

// SafeEval evaluates exp in env and returns the result and nil.
// If an error happens, it returns Nil and the error.
func SafeEval(exp Any, env *Cell) (result Any, err Any) {
	defer func() {
		if e := recover(); e != nil {
			result, err = Nil, e
		}
	}()
	return Eval(exp, env), nil
}

// Read-Eval-Print Loop of the interpreter
func ReadEvalPrintLoop(env *Cell) {
	rr := NewReader(os.Stdin)
	for {
		os.Stdout.WriteString("> ")
		x, err := rr.Read()
		if err == nil {
			if x == EofToken {
				return
			}
			x, err = SafeEval(x, env)
			if err == nil && x != VoidToken {
				fmt.Println(Str(x))
			}
		}
		if err != nil {
			fmt.Println(err)
		}
	}
}

// Non-Interactive Read-Eval Loop of the interpreter
func ReadEvalLoop(input io.Reader, env *Cell) (result Any, err Any) {
	result = Nil
	rr := NewReader(input)
	for {
		x, err := rr.Read()
		if err == nil {
			if x == EofToken {
				return result, nil
			}
			result, err = SafeEval(x, env)
		}
		if err != nil {
			return nil, err
		}
	}
}

// Main runs each element of args as a name of Scheme script file.
// It ignores args[0].
// If it does not have args[1] or some element is "-", it begins REPL.
func Main(args []string) int {
	if len(args) < 2 {
		args = []string{args[0], "-"}
	}
	var result Any = VoidToken
	for i, fileName := range args {
		if i == 0 {
			continue
		} else if fileName == "-" {
			ReadEvalPrintLoop(GlobalEnv)
			fmt.Println("Goodbye")
			result = VoidToken
		} else {
			var err Any
			file, err := os.Open(fileName)
			if err == nil {
				result, err = ReadEvalLoop(file, GlobalEnv)
				file.Close()
			}
			if err != nil {
				fmt.Println(err)
				return 1
			}
		}
	}
	if result != VoidToken {
		fmt.Println(Str(result))
	}
	return 0
}

func main() {
	os.Exit(Main(os.Args))
}

repository: nukata/scheme-in-go

repo_name: nukata/scheme-in-go


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="6.5.0">
<drawing>
<settings>
<setting alwaysvectorfont="yes"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.635" unitdist="mm" unit="mm" style="lines" multiple="1" display="yes" altdistance="0.00625" altunitdist="inch" altunit="inch"/>
<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="yes"/>
<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="yes"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="no" 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="15" 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="no" 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="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="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="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="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="yes" 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="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="yes"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" 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="yes"/>
<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="Anatomie" 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="Brücken" color="12" fill="1" visible="no" active="yes"/>
<layer number="103" name="CableCode" color="7" fill="1" visible="no" active="yes"/>
<layer number="104" name="S_DOKU" color="7" fill="1" visible="no" active="yes"/>
<layer number="110" name="tdokum" color="7" fill="1" visible="no" active="yes"/>
<layer number="111" name="bdokum" color="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" 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="151" name="HeatSink" color="7" fill="1" visible="no" active="yes"/>
<layer number="199" name="L$199" 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="1" visible="no" active="no"/>
<layer number="202" name="202bmp" color="3" fill="1" visible="no" active="no"/>
<layer number="231" name="Eagle3D_Case1" color="14" fill="1" visible="no" active="yes"/>
<layer number="232" name="Eagle3D_Case2" color="14" fill="1" visible="no" active="yes"/>
<layer number="233" name="Eagle3D_Case3" color="6" 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="Cool" color="7" fill="1" visible="no" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="19.05" x2="0" y2="0" width="0" layer="20"/>
<wire x1="0" y1="0" x2="37.1475" y2="0" width="0" layer="20"/>
<wire x1="37.1475" y1="0" x2="37.1475" y2="19.05" width="0" layer="20"/>
<wire x1="37.1475" y1="19.05" x2="0" y2="19.05" width="0" layer="20"/>
</plain>
<libraries>
<library name="rcl">
<packages>
<package name="C1206">
<description>CAPACITOR</description>
<wire x1="-2.473" y1="0.983" x2="2.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="2.473" y1="-0.983" x2="-2.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-2.473" y1="-0.983" x2="-2.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="2.473" y1="0.983" x2="2.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<text x="-1.27" y="1.27" size="1.27" layer="25">>NAME</text>
<text x="-1.27" y="-2.54" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
</package>
<package name="M0805">
<description>RESISTOR

MELF 0.10 W</description>
<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="0.7112" y1="0.635" x2="-0.7112" y2="0.635" width="0.1524" layer="51"/>
<wire x1="0.7112" y1="-0.635" x2="-0.7112" y2="-0.635" width="0.1524" layer="51"/>
<smd name="1" x="-0.95" y="0" dx="1.3" dy="1.6" layer="1"/>
<smd name="2" x="0.95" y="0" dx="1.3" dy="1.6" layer="1"/>
<text x="-1.27" y="1.27" size="1.27" layer="25">>NAME</text>
<text x="-1.27" y="-2.54" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-1.0414" y1="-0.7112" x2="-0.6858" y2="0.7112" layer="51"/>
<rectangle x1="0.6858" y1="-0.7112" x2="1.0414" y2="0.7112" layer="51"/>
<rectangle x1="-0.1999" y1="-0.5999" x2="0.1999" y2="0.5999" layer="35"/>
</package>
<package name="C0805">
<description>CAPACITOR
</description>
<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
<wire x1="-0.381" y1="0.66" x2="0.381" y2="0.66" width="0.1016" layer="51"/>
<wire x1="-0.356" y1="-0.66" x2="0.381" y2="-0.66" width="0.1016" layer="51"/>
<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
<smd name="1" x="-0.95" y="0" dx="1.3" dy="1.5" layer="1"/>
<smd name="2" x="0.95" y="0" dx="1.3" dy="1.5" layer="1"/>
<text x="-1.27" y="1.27" size="1.27" layer="25">>NAME</text>
<text x="-1.27" y="-2.54" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-1.0922" y1="-0.7239" x2="-0.3421" y2="0.7262" layer="51"/>
<rectangle x1="0.3556" y1="-0.7239" x2="1.1057" y2="0.7262" layer="51"/>
<rectangle x1="-0.1001" y1="-0.4001" x2="0.1001" y2="0.4001" layer="35"/>
</package>
</packages>
</library>
<library name="diode">
<packages>
<package name="SOD80C">
<description>DIODE</description>
<wire x1="1.3208" y1="0.7874" x2="-1.3208" y2="0.7874" width="0.1524" layer="51"/>
<wire x1="1.3208" y1="-0.7874" x2="-1.3208" y2="-0.7874" width="0.1524" layer="51"/>
<wire x1="0.627" y1="0.6" x2="-0.373" y2="0" width="0.2032" layer="21"/>
<wire x1="-0.373" y1="0" x2="0.627" y2="-0.6" width="0.2032" layer="21"/>
<wire x1="0.627" y1="-0.6" x2="0.627" y2="0.6" width="0.2032" layer="21"/>
<smd name="C" x="-1.7" y="0" dx="1.4" dy="1.8" layer="1"/>
<smd name="A" x="1.7" y="0" dx="1.4" dy="1.8" layer="1"/>
<text x="-1.524" y="1.143" size="1.27" layer="25">>NAME</text>
<text x="-1.524" y="-2.413" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-1.8542" y1="-0.8636" x2="-1.2954" y2="0.8636" layer="51"/>
<rectangle x1="1.2954" y1="-0.8636" x2="1.8542" y2="0.8636" layer="51"/>
<rectangle x1="-0.8636" y1="-0.7874" x2="-0.254" y2="0.7874" layer="21"/>
</package>
</packages>
</library>
<library name="rca_mosfet">
<packages>
<package name="SO08">
<description>Small Outline Package 8</description>
<wire x1="2.4" y1="1.9" x2="2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.9" x2="-2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.9" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.4" x2="-2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="1.9" x2="2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<smd name="2" x="-0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="7" x="-0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="1" x="-1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="3" x="0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="4" x="1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="8" x="-1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="6" x="0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="5" x="1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<text x="-2.667" y="-1.905" size="1.27" layer="25" rot="R90">>NAME</text>
<text x="3.937" y="-1.905" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-2.15" y1="-3.1" x2="-1.66" y2="-2" layer="51"/>
<rectangle x1="-0.88" y1="-3.1" x2="-0.39" y2="-2" layer="51"/>
<rectangle x1="0.39" y1="-3.1" x2="0.88" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="-3.1" x2="2.15" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="2" x2="2.15" y2="3.1" layer="51"/>
<rectangle x1="0.39" y1="2" x2="0.88" y2="3.1" layer="51"/>
<rectangle x1="-0.88" y1="2" x2="-0.39" y2="3.1" layer="51"/>
<rectangle x1="-2.15" y1="2" x2="-1.66" y2="3.1" layer="51"/>
</package>
<package name="SO08G">
<wire x1="2.4" y1="1.9" x2="2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.9" x2="-2.4" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.9" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="-1.4" x2="-2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="-2.4" y1="1.9" x2="2.4" y2="1.9" width="0.2032" layer="51"/>
<wire x1="2.4" y1="-1.4" x2="-2.4" y2="-1.4" width="0.2032" layer="51"/>
<smd name="2" x="-0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="7" x="-0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="1" x="-1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="3" x="0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="4" x="1.905" y="-3.048" dx="0.6" dy="1.27" layer="1"/>
<smd name="8" x="-1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="6" x="0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="5" x="1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<text x="-2.667" y="-1.905" size="1.27" layer="25" rot="R90">>NAME</text>
<text x="3.937" y="-1.905" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-2.15" y1="-3.1" x2="-1.66" y2="-2" layer="51"/>
<rectangle x1="-0.88" y1="-3.1" x2="-0.39" y2="-2" layer="51"/>
<rectangle x1="0.39" y1="-3.1" x2="0.88" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="-3.1" x2="2.15" y2="-2" layer="51"/>
<rectangle x1="1.66" y1="2" x2="2.15" y2="3.1" layer="51"/>
<rectangle x1="0.39" y1="2" x2="0.88" y2="3.1" layer="51"/>
<rectangle x1="-0.88" y1="2" x2="-0.39" y2="3.1" layer="51"/>
<rectangle x1="-2.15" y1="2" x2="-1.66" y2="3.1" layer="51"/>
</package>
<package name="SO14">
<description>SMALL OUTLINE INTEGRATED CIRCUIT

body 3.9 mm/JEDEC MS-012AC</description>
<wire x1="-4.895" y1="3.9" x2="4.895" y2="3.9" width="0.1998" layer="39"/>
<wire x1="4.895" y1="-3.9" x2="-4.895" y2="-3.9" width="0.1998" layer="39"/>
<wire x1="-4.895" y1="-3.9" x2="-4.895" y2="3.9" width="0.1998" layer="39"/>
<wire x1="4.305" y1="-1.9" x2="-4.305" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="-4.305" y1="-1.9" x2="-4.305" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="-4.305" y1="-1.4" x2="-4.305" y2="1.9" width="0.2032" layer="51"/>
<wire x1="4.305" y1="-1.4" x2="-4.305" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="4.305" y1="1.9" x2="4.305" y2="-1.4" width="0.2032" layer="51"/>
<wire x1="4.305" y1="-1.4" x2="4.305" y2="-1.9" width="0.2032" layer="51"/>
<wire x1="4.895" y1="3.9" x2="4.895" y2="-3.9" width="0.1998" layer="39"/>
<wire x1="-4.305" y1="1.9" x2="4.305" y2="1.9" width="0.2032" layer="51"/>
<smd name="2" x="-2.54" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="13" x="-2.54" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="1" x="-3.81" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="3" x="-1.27" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="4" x="0" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="14" x="-3.81" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="12" x="-1.27" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="11" x="0" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="6" x="2.54" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="9" x="2.54" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="5" x="1.27" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="7" x="3.81" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="10" x="1.27" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<smd name="8" x="3.81" y="2.6" dx="0.6" dy="2.2" layer="1"/>
<text x="-5.08" y="-1.905" size="1.27" layer="25" rot="R90">>NAME</text>
<text x="6.35" y="-1.905" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-4.0551" y1="-3.1001" x2="-3.5649" y2="-2" layer="51"/>
<rectangle x1="-2.7851" y1="-3.1001" x2="-2.2949" y2="-2" layer="51"/>
<rectangle x1="-1.5151" y1="-3.1001" x2="-1.0249" y2="-2" layer="51"/>
<rectangle x1="-0.2451" y1="-3.1001" x2="0.2451" y2="-2" layer="51"/>
<rectangle x1="-0.2451" y1="2" x2="0.2451" y2="3.1001" layer="51"/>
<rectangle x1="-1.5151" y1="2" x2="-1.0249" y2="3.1001" layer="51"/>
<rectangle x1="-2.7851" y1="2" x2="-2.2949" y2="3.1001" layer="51"/>
<rectangle x1="-4.0551" y1="2" x2="-3.5649" y2="3.1001" layer="51"/>
<rectangle x1="1.0249" y1="-3.1001" x2="1.5151" y2="-2" layer="51"/>
<rectangle x1="2.2949" y1="-3.1001" x2="2.7851" y2="-2" layer="51"/>
<rectangle x1="3.5649" y1="-3.1001" x2="4.0551" y2="-2" layer="51"/>
<rectangle x1="3.5649" y1="2" x2="4.0551" y2="3.1001" layer="51"/>
<rectangle x1="2.2949" y1="2" x2="2.7851" y2="3.1001" layer="51"/>
<rectangle x1="1.0249" y1="2" x2="1.5151" y2="3.1001" layer="51"/>
</package>
</packages>
</library>
<library name="pinhead2">
<packages>
<package name="2X02_SIDE">
<wire x1="-2.54" y1="0" x2="0" y2="0" width="0.1524" layer="21"/>
<wire x1="0" y1="0" x2="0" y2="2.54" width="0.1524" layer="21"/>
<wire x1="0" y1="2.54" x2="-2.54" y2="2.54" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="2.54" x2="-2.54" y2="0" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="8.89" x2="-1.27" y2="2.921" width="0.762" layer="21"/>
<wire x1="0" y1="0" x2="2.54" y2="0" width="0.1524" layer="21"/>
<wire x1="2.54" y1="0" x2="2.54" y2="2.54" width="0.1524" layer="21"/>
<wire x1="2.54" y1="2.54" x2="0" y2="2.54" width="0.1524" layer="21"/>
<wire x1="1.27" y1="8.89" x2="1.27" y2="2.921" width="0.762" layer="21"/>
<wire x1="-2.54" y1="0" x2="0" y2="0" width="0.1524" layer="22"/>
<wire x1="0" y1="0" x2="0" y2="2.54" width="0.1524" layer="22"/>
<wire x1="0" y1="2.54" x2="-2.54" y2="2.54" width="0.1524" layer="22"/>
<wire x1="-2.54" y1="2.54" x2="-2.54" y2="0" width="0.1524" layer="22"/>
<wire x1="-1.27" y1="8.89" x2="-1.27" y2="2.921" width="0.762" layer="22"/>
<wire x1="0" y1="0" x2="2.54" y2="0" width="0.1524" layer="22"/>
<wire x1="2.54" y1="0" x2="2.54" y2="2.54" width="0.1524" layer="22"/>
<wire x1="2.54" y1="2.54" x2="0" y2="2.54" width="0.1524" layer="22"/>
<wire x1="1.27" y1="8.89" x2="1.27" y2="2.921" width="0.762" layer="22"/>
<wire x1="-1.27" y1="-1.905" x2="-1.27" y2="-2.921" width="0.762" layer="51"/>
<wire x1="1.27" y1="-1.905" x2="1.27" y2="-2.921" width="0.762" layer="51"/>
<wire x1="-1.27" y1="-1.905" x2="-1.27" y2="-2.921" width="0.762" layer="52"/>
<wire x1="1.27" y1="-1.905" x2="1.27" y2="-2.921" width="0.762" layer="52"/>
<smd name="1" x="-1.27" y="-2.032" dx="1.524" dy="3.048" layer="1"/>
<smd name="3" x="1.27" y="-2.032" dx="1.524" dy="3.048" layer="1"/>
<smd name="2" x="-1.27" y="-2.032" dx="1.524" dy="3.048" layer="16"/>
<smd name="4" x="1.27" y="-2.032" dx="1.524" dy="3.048" layer="16"/>
<text x="-3.175" y="-1.27" size="1.27" layer="25" ratio="10" rot="R90">>NAME</text>
<text x="4.445" y="-1.27" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-1.651" y1="2.54" x2="-0.889" y2="3.048" layer="21"/>
<rectangle x1="0.889" y1="2.54" x2="1.651" y2="3.048" layer="21"/>
<rectangle x1="0.889" y1="-0.508" x2="1.651" y2="0" layer="21"/>
<rectangle x1="-1.651" y1="-0.508" x2="-0.889" y2="0" layer="21"/>
<rectangle x1="-1.651" y1="-2.921" x2="-0.889" y2="-0.508" layer="51"/>
<rectangle x1="0.889" y1="-2.921" x2="1.651" y2="-0.508" layer="51"/>
<rectangle x1="-1.651" y1="2.54" x2="-0.889" y2="3.048" layer="22"/>
<rectangle x1="0.889" y1="2.54" x2="1.651" y2="3.048" layer="22"/>
<rectangle x1="0.889" y1="-0.508" x2="1.651" y2="0" layer="22"/>
<rectangle x1="-1.651" y1="-0.508" x2="-0.889" y2="0" layer="22"/>
<rectangle x1="-1.651" y1="-2.921" x2="-0.889" y2="-0.508" layer="52"/>
<rectangle x1="0.889" y1="-2.921" x2="1.651" y2="-0.508" layer="52"/>
</package>
<package name="2X03_SIDE">
<wire x1="-3.81" y1="0" x2="-1.27" y2="0" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="0" x2="-1.27" y2="2.54" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="2.54" x2="-3.81" y2="2.54" width="0.1524" layer="21"/>
<wire x1="-3.81" y1="2.54" x2="-3.81" y2="0" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="8.89" x2="-2.54" y2="2.921" width="0.762" layer="21"/>
<wire x1="-1.27" y1="0" x2="1.27" y2="0" width="0.1524" layer="21"/>
<wire x1="1.27" y1="2.54" x2="-1.27" y2="2.54" width="0.1524" layer="21"/>
<wire x1="0" y1="8.89" x2="0" y2="2.921" width="0.762" layer="21"/>
<wire x1="-3.81" y1="0" x2="-1.27" y2="0" width="0.1524" layer="22"/>
<wire x1="-1.27" y1="0" x2="-1.27" y2="2.54" width="0.1524" layer="22"/>
<wire x1="-1.27" y1="2.54" x2="-3.81" y2="2.54" width="0.1524" layer="22"/>
<wire x1="-3.81" y1="2.54" x2="-3.81" y2="0" width="0.1524" layer="22"/>
<wire x1="-2.54" y1="8.89" x2="-2.54" y2="2.921" width="0.762" layer="22"/>
<wire x1="-1.27" y1="0" x2="1.27" y2="0" width="0.1524" layer="22"/>
<wire x1="1.27" y1="2.54" x2="-1.27" y2="2.54" width="0.1524" layer="22"/>
<wire x1="0" y1="8.89" x2="0" y2="2.921" width="0.762" layer="22"/>
<wire x1="-2.54" y1="-1.905" x2="-2.54" y2="-2.921" width="0.762" layer="51"/>
<wire x1="0" y1="-1.905" x2="0" y2="-2.921" width="0.762" layer="51"/>
<wire x1="-2.54" y1="-1.905" x2="-2.54" y2="-2.921" width="0.762" layer="52"/>
<wire x1="0" y1="-1.905" x2="0" y2="-2.921" width="0.762" layer="52"/>
<wire x1="1.27" y1="0" x2="3.81" y2="0" width="0.1524" layer="21"/>
<wire x1="3.81" y1="0" x2="3.81" y2="2.54" width="0.1524" layer="21"/>
<wire x1="3.81" y1="2.54" x2="1.27" y2="2.54" width="0.1524" layer="21"/>
<wire x1="1.27" y1="2.54" x2="1.27" y2="0" width="0.1524" layer="21"/>
<wire x1="2.54" y1="8.89" x2="2.54" y2="2.921" width="0.762" layer="21"/>
<wire x1="1.27" y1="0" x2="3.81" y2="0" width="0.1524" layer="22"/>
<wire x1="3.81" y1="0" x2="3.81" y2="2.54" width="0.1524" layer="22"/>
<wire x1="3.81" y1="2.54" x2="1.27" y2="2.54" width="0.1524" layer="22"/>
<wire x1="1.27" y1="2.54" x2="1.27" y2="0" width="0.1524" layer="22"/>
<wire x1="2.54" y1="8.89" x2="2.54" y2="2.921" width="0.762" layer="22"/>
<wire x1="2.54" y1="-1.905" x2="2.54" y2="-2.921" width="0.762" layer="51"/>
<wire x1="2.54" y1="-1.905" x2="2.54" y2="-2.921" width="0.762" layer="52"/>
<smd name="5" x="2.54" y="-2.032" dx="1.524" dy="3.048" layer="1"/>
<smd name="3" x="0" y="-2.032" dx="1.524" dy="3.048" layer="1"/>
<smd name="6" x="2.54" y="-2.032" dx="1.524" dy="3.048" layer="16"/>
<smd name="4" x="0" y="-2.032" dx="1.524" dy="3.048" layer="16"/>
<smd name="1" x="-2.54" y="-2.032" dx="1.524" dy="3.048" layer="1"/>
<smd name="2" x="-2.54" y="-2.032" dx="1.524" dy="3.048" layer="16"/>
<text x="-4.445" y="-1.27" size="1.27" layer="25" ratio="10" rot="R90">>NAME</text>
<text x="5.715" y="-1.27" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-2.921" y1="2.54" x2="-2.159" y2="3.048" layer="21"/>
<rectangle x1="-0.381" y1="2.54" x2="0.381" y2="3.048" layer="21"/>
<rectangle x1="-0.381" y1="-0.508" x2="0.381" y2="0" layer="21"/>
<rectangle x1="-2.921" y1="-0.508" x2="-2.159" y2="0" layer="21"/>
<rectangle x1="-2.921" y1="-2.921" x2="-2.159" y2="-0.508" layer="51"/>
<rectangle x1="-0.381" y1="-2.921" x2="0.381" y2="-0.508" layer="51"/>
<rectangle x1="-2.921" y1="2.54" x2="-2.159" y2="3.048" layer="22"/>
<rectangle x1="-0.381" y1="2.54" x2="0.381" y2="3.048" layer="22"/>
<rectangle x1="-0.381" y1="-0.508" x2="0.381" y2="0" layer="22"/>
<rectangle x1="-2.921" y1="-0.508" x2="-2.159" y2="0" layer="22"/>
<rectangle x1="-2.921" y1="-2.921" x2="-2.159" y2="-0.508" layer="52"/>
<rectangle x1="-0.381" y1="-2.921" x2="0.381" y2="-0.508" layer="52"/>
<rectangle x1="2.159" y1="2.54" x2="2.921" y2="3.048" layer="21"/>
<rectangle x1="2.159" y1="-0.508" x2="2.921" y2="0" layer="21"/>
<rectangle x1="2.159" y1="-2.921" x2="2.921" y2="-0.508" layer="51"/>
<rectangle x1="2.159" y1="2.54" x2="2.921" y2="3.048" layer="22"/>
<rectangle x1="2.159" y1="-0.508" x2="2.921" y2="0" layer="22"/>
<rectangle x1="2.159" y1="-2.921" x2="2.921" y2="-0.508" layer="52"/>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
<class number="1" name="power" width="0.4064" drill="0.508">
</class>
</classes>
<designrules name="PCB-POOL">
<description language="en">EAGLE Design Rules Prototypen  fr PCB-POOL(R)

Wir haben in diesem DRU File alle notwendigen Design Einstellungen vorgenommen, damit Sie Ihre Leiterplatte
gem? unseren Mindestanforderungen bestellen k?nen. Die Optionen Shapes und Misc sind dabei nicht relevant.
Der minimale und maximale Wert fr Roundness Shapes kann frei gew?lt werden.
Bitte beachten Sie, da?die Mindesteinstellungen nicht ge?dert werden, da ansonsten keine Gew?rleistung fr eine
fehlerfreie Produktion bernommen werden kann.

Abzudeckende Vias k?nen in Masks (unter Limit) eingestellt werden.

Ihr Beta LAYOUT Team

EAGLE Design Rules Prototypes to use with PCB-POOL(R)

The design rules in this DRU file have been set to cover our minimum requirements, the options Shapes and  Misc are not
relevant. Values for Roundness (Shapes) can be chosen freely. Please do not change these minimum
requirements to avoid problems during production.

Covered vias can be set in Masks (Limit).

Your Beta LAYOUT Team</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="6mil"/>
<param name="mdWirePad" value="6mil"/>
<param name="mdWireVia" value="6mil"/>
<param name="mdPadPad" value="6mil"/>
<param name="mdPadVia" value="6mil"/>
<param name="mdViaVia" value="6mil"/>
<param name="mdSmdPad" value="6mil"/>
<param name="mdSmdVia" value="6mil"/>
<param name="mdSmdSmd" value="6mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="20mil"/>
<param name="mdDrill" value="8mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="6mil"/>
<param name="msDrill" value="12mil"/>
<param name="msMicroVia" value="999mil"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0"/>
<param name="rvPadInner" value="0"/>
<param name="rvPadBottom" value="0"/>
<param name="rvViaOuter" value="0"/>
<param name="rvViaInner" value="0"/>
<param name="rvMicroViaOuter" value="0"/>
<param name="rvMicroViaInner" value="0"/>
<param name="rlMinPadTop" value="8mil"/>
<param name="rlMaxPadTop" value="100mil"/>
<param name="rlMinPadInner" value="8mil"/>
<param name="rlMaxPadInner" value="100mil"/>
<param name="rlMinPadBottom" value="8mil"/>
<param name="rlMaxPadBottom" value="100mil"/>
<param name="rlMinViaOuter" value="6mil"/>
<param name="rlMaxViaOuter" value="100mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="100mil"/>
<param name="rlMinMicroViaOuter" value="99mil"/>
<param name="rlMaxMicroViaOuter" value="999mil"/>
<param name="rlMinMicroViaInner" value="99mil"/>
<param name="rlMaxMicroViaInner" value="999mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="0"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="3mil"/>
<param name="mlMaxStopFrame" value="8mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="8mil"/>
<param name="mlViaStopLimit" value="20mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="8mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="|"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="-"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
</autorouter>
<elements>
<element name="R2" library="rcl" package="M0805" value="40" x="11.58875" y="13.17625" rot="MR180"/>
<element name="R3" library="rcl" package="M0805" value="40" x="24.4475" y="3.4925" rot="MR180"/>
<element name="C4" library="rcl" package="C0805" value="100n" x="31.75" y="9.68375" rot="MR90"/>
<element name="C5" library="rcl" package="C1206" value="100n" x="16.35125" y="14.9225" rot="MR270"/>
<element name="D1" library="diode" package="SOD80C" value="1N4148" x="25.24125" y="6.82625" rot="MR180"/>
<element name="R7" library="rcl" package="M0805" value="22k" x="29.5275" y="4.7625" rot="MR180"/>
<element name="R5" library="rcl" package="M0805" value="22K" x="12.7" y="2.2225" rot="MR270"/>
<element name="R4" library="rcl" package="M0805" value="22K" x="8.09625" y="13.17625" rot="MR0"/>
<element name="R6" library="rcl" package="M0805" value="40" x="12.7" y="13.0175"/>
<element name="R8" library="rcl" package="M0805" value="40" x="20.47875" y="6.35" rot="R90"/>
<element name="C1" library="rcl" package="C0805" value="100n" x="33.9725" y="8.73125" rot="R180"/>
<element name="C2" library="rcl" package="C1206" value="100n" x="21.2725" y="10.795" rot="R90"/>
<element name="D2" library="diode" package="SOD80C" value="1N4148" x="28.2575" y="17.62125"/>
<element name="R9" library="rcl" package="M0805" value="22K" x="24.765" y="2.2225" rot="R270"/>
<element name="R10" library="rcl" package="M0805" value="22K" x="8.255" y="13.0175"/>
<element name="R12" library="rcl" package="M0805" value="15" x="14.2875" y="15.24" rot="MR90"/>
<element name="D3" library="diode" package="SOD80C" value="1N4148" x="10.4775" y="15.39875" rot="MR0"/>
<element name="D4" library="diode" package="SOD80C" value="1N4148" x="11.7475" y="15.24" rot="R180"/>
<element name="R13" library="rcl" package="M0805" value="15" x="15.5575" y="13.97" rot="R90"/>
<element name="R14" library="rcl" package="M0805" value="15" x="24.4475" y="1.5875" rot="MR0"/>
<element name="D5" library="diode" package="SOD80C" value="1N4148" x="20.6375" y="3.175" rot="MR90"/>
<element name="R15" library="rcl" package="M0805" value="15" x="24.765" y="5.87375" rot="R270"/>
<element name="D6" library="diode" package="SOD80C" value="1N4148" x="22.70125" y="4.1275" rot="R270"/>
<element name="T1" library="rca_mosfet" package="SO08G" value="IRF7413G" x="8.89" y="7.9375" rot="MR180"/>
<element name="T2" library="rca_mosfet" package="SO08" value="IRF7413" x="15.24" y="7.9375" rot="MR0"/>
<element name="T3" library="rca_mosfet" package="SO08G" value="IRF7413G" x="8.89" y="7.9375" rot="R180"/>
<element name="T4" library="rca_mosfet" package="SO08" value="IRF7413" x="15.39875" y="7.9375"/>
<element name="JP3" library="pinhead2" package="2X02_SIDE" value="" x="8.89" y="0" rot="R180"/>
<element name="JP4" library="pinhead2" package="2X02_SIDE" value="" x="16.51" y="0" rot="R180"/>
<element name="JP1" library="pinhead2" package="2X03_SIDE" value="" x="30.48" y="0" rot="R180"/>
<element name="JP2" library="pinhead2" package="2X02_SIDE" value="" x="3.81" y="0" rot="R180"/>
<element name="IC4" library="rca_mosfet" package="SO14" value="IR21844" x="24.765" y="12.7" rot="MR270"/>
<element name="IC5" library="rca_mosfet" package="SO14" value="IR21844" x="28.2575" y="12.065" rot="R90"/>
<element name="R16" library="rcl" package="M0805" value="22k" x="30.63875" y="13.0175" rot="MR0"/>
<element name="R17" library="rcl" package="M0805" value="22k" x="33.9725" y="11.90625" rot="R180"/>
<element name="R18" library="rcl" package="M0805" value="22k" x="29.5275" y="4.7625"/>
<element name="C3" library="rcl" package="C1206" value="2u2" x="18.415" y="14.9225" rot="MR270">
<attribute name="VOLTAGE" value="50V" x="18.415" y="14.9225" size="1.778" layer="28" rot="MR270" display="off"/>
</element>
<element name="C6" library="rcl" package="C1206" value="2u2" x="23.33625" y="10.795" rot="R90">
<attribute name="VOLTAGE" value="50V" x="23.33625" y="10.795" size="1.778" layer="27" rot="R90" display="off"/>
</element>
<element name="C10" library="rcl" package="C1206" value="2u2" x="33.3375" y="15.24" rot="R270">
<attribute name="VOLTAGE" value="50V" x="33.3375" y="15.24" size="1.778" layer="27" rot="R270" display="off"/>
</element>
<element name="C11" library="rcl" package="C1206" value="2u2" x="29.845" y="9.68375" rot="MR90">
<attribute name="VOLTAGE" value="50V" x="29.845" y="9.68375" size="1.778" layer="28" rot="MR90" display="off"/>
</element>
</elements>
<signals>
<signal name="GND">
<contactref element="C4" pad="2"/>
<contactref element="R7" pad="1"/>
<contactref element="JP1" pad="5"/>
<contactref element="IC4" pad="3"/>
<contactref element="R16" pad="1"/>
<contactref element="IC5" pad="3"/>
<contactref element="C1" pad="2"/>
<contactref element="R17" pad="1"/>
<contactref element="R18" pad="1"/>
<wire x1="30.8575" y1="10.795" x2="31.90875" y2="10.795" width="0.6096" layer="1"/>
<wire x1="31.90875" y1="10.795" x2="32.22625" y2="10.4775" width="0.6096" layer="1"/>
<wire x1="32.22625" y1="10.4775" x2="33.02" y2="10.4775" width="0.6096" layer="1"/>
<wire x1="33.02" y1="10.4775" x2="33.17875" y2="10.31875" width="0.6096" layer="1"/>
<wire x1="33.3375" y1="10.4775" x2="33.9725" y2="10.4775" width="0.6096" layer="1"/>
<wire x1="33.9725" y1="10.4775" x2="34.76625" y2="11.27125" width="0.6096" layer="1"/>
<wire x1="34.76625" y1="11.27125" x2="34.925" y2="11.745" width="0.6096" layer="1"/>
<wire x1="34.925" y1="11.745" x2="34.9225" y2="11.90625" width="0.6096" layer="1"/>
<wire x1="27.94" y1="2.032" x2="27.94" y2="4.125" width="0.6096" layer="1"/>
<wire x1="27.94" y1="4.125" x2="28.5775" y2="4.7625" width="0.6096" layer="1"/>
<wire x1="28.5775" y1="4.7625" x2="28.5775" y2="5.4" width="0.6096" layer="1"/>
<wire x1="28.5775" y1="5.4" x2="28.575" y2="5.715" width="0.6096" layer="1"/>
<wire x1="28.575" y1="5.715" x2="29.21" y2="6.35" width="0.6096" layer="1"/>
<via x="29.21" y="6.35" extent="1-16" drill="0.5"/>
<wire x1="29.21" y1="6.35" x2="32.54375" y2="6.35" width="0.6096" layer="16"/>
<wire x1="32.54375" y1="6.35" x2="33.17875" y2="6.985" width="0.6096" layer="16"/>
<wire x1="33.17875" y1="6.985" x2="33.17875" y2="10.31875" width="0.6096" layer="16"/>
<via x="33.17875" y="10.31875" extent="1-16" drill="0.5"/>
<wire x1="33.17875" y1="10.31875" x2="33.3375" y2="10.4775" width="0.6096" layer="1"/>
<wire x1="28.5775" y1="4.7625" x2="28.5775" y2="5.4" width="0.6096" layer="16"/>
<wire x1="28.5775" y1="5.4" x2="28.575" y2="5.715" width="0.6096" layer="16"/>
<wire x1="28.575" y1="5.715" x2="29.21" y2="6.35" width="0.6096" layer="16"/>
<wire x1="33.17875" y1="10.31875" x2="32.7025" y2="10.63625" width="0.6096" layer="16"/>
<wire x1="32.7025" y1="10.63625" x2="31.7525" y2="10.63625" width="0.6096" layer="16"/>
<wire x1="31.7525" y1="10.63625" x2="31.75" y2="10.63375" width="0.6096" layer="16"/>
<wire x1="31.75" y1="10.63375" x2="31.75" y2="12.6975" width="0.6096" layer="16"/>
<wire x1="31.75" y1="12.6975" x2="31.58875" y2="13.0175" width="0.6096" layer="16"/>
<wire x1="27.365" y1="13.97" x2="28.41625" y2="13.97" width="0.6096" layer="16"/>
<wire x1="28.41625" y1="13.97" x2="28.8925" y2="14.44625" width="0.6096" layer="16"/>
<wire x1="28.8925" y1="14.44625" x2="31.27375" y2="14.44625" width="0.6096" layer="16"/>
<wire x1="31.27375" y1="14.44625" x2="31.75" y2="13.97" width="0.6096" layer="16"/>
<wire x1="31.75" y1="13.97" x2="31.75" y2="13.17875" width="0.6096" layer="16"/>
<wire x1="31.75" y1="13.17875" x2="31.58875" y2="13.0175" width="0.6096" layer="16"/>
<wire x1="33.0225" y1="8.73125" x2="33.0225" y2="8.73375" width="0.6096" layer="1"/>
<wire x1="33.0225" y1="8.73375" x2="33.17875" y2="8.89" width="0.6096" layer="1"/>
<wire x1="33.17875" y1="8.89" x2="33.17875" y2="10.31875" width="0.6096" layer="1"/>
<polygon width="0.4064" layer="16" isolate="0.3048" thermals="no" rank="6">
<vertex x="37.465" y="-0.635"/>
<vertex x="37.465" y="19.685"/>
<vertex x="23.495" y="19.685"/>
<vertex x="23.495" y="-0.635"/>
</polygon>
</signal>
<signal name="N$4" class="1">
<contactref element="R2" pad="1"/>
<contactref element="D3" pad="A"/>
<contactref element="T1" pad="4"/>
<contactref element="R4" pad="1"/>
<wire x1="8.7775" y1="15.39875" x2="8.7775" y2="15.3525" width="0.6096" layer="16"/>
<wire x1="8.7775" y1="15.3525" x2="9.04875" y2="15.08125" width="0.6096" layer="16"/>
<wire x1="9.04875" y1="15.08125" x2="9.04875" y2="13.17875" width="0.6096" layer="16"/>
<wire x1="9.04875" y1="13.17875" x2="9.04625" y2="13.17625" width="0.6096" layer="16"/>
<wire x1="9.04625" y1="13.17625" x2="10.63875" y2="13.17625" width="0.6096" layer="16"/>
<wire x1="10.795" y1="10.9855" x2="10.795" y2="13.02" width="0.6096" layer="16"/>
<wire x1="10.795" y1="13.02" x2="10.63875" y2="13.17625" width="0.6096" layer="16"/>
</signal>
<signal name="N$6" class="1">
<contactref element="R2" pad="2"/>
<contactref element="R12" pad="1"/>
<contactref element="IC4" pad="12"/>
<wire x1="22.165" y1="13.97" x2="21.11375" y2="13.97" width="0.6096" layer="16"/>
<wire x1="21.11375" y1="13.97" x2="19.52625" y2="14.9225" width="0.6096" layer="16"/>
<wire x1="19.52625" y1="14.9225" x2="15.24" y2="14.9225" width="0.6096" layer="16"/>
<wire x1="15.24" y1="14.9225" x2="14.76375" y2="14.44625" width="0.6096" layer="16"/>
<wire x1="14.76375" y1="14.44625" x2="14.29" y2="14.44625" width="0.6096" layer="16"/>
<wire x1="14.29" y1="14.44625" x2="14.2875" y2="14.29" width="0.6096" layer="16"/>
<wire x1="14.29" y1="14.44625" x2="14.2875" y2="14.605" width="0.6096" layer="16"/>
<wire x1="14.2875" y1="14.605" x2="14.2875" y2="14.29" width="0.6096" layer="16"/>
<wire x1="14.2875" y1="14.29" x2="14.2875" y2="13.97" width="0.6096" layer="16"/>
<wire x1="12.53875" y1="13.17625" x2="12.7" y2="13.17625" width="0.6096" layer="16"/>
<wire x1="12.7" y1="13.17625" x2="13.81125" y2="14.2875" width="0.6096" layer="16"/>
<wire x1="13.81125" y1="14.2875" x2="14.285" y2="14.2875" width="0.6096" layer="16"/>
<wire x1="14.285" y1="14.2875" x2="14.2875" y2="14.29" width="0.6096" layer="16"/>
</signal>
<signal name="N$15" class="1">
<contactref element="R3" pad="2"/>
<contactref element="R14" pad="1"/>
<wire x1="25.3975" y1="1.5875" x2="25.4" y2="1.5875" width="0.6096" layer="16"/>
<wire x1="25.4" y1="1.5875" x2="25.4" y2="3.495" width="0.6096" layer="16"/>
<wire x1="25.4" y1="3.495" x2="25.4" y2="3.8075" width="0.6096" layer="16"/>
<wire x1="25.4" y1="3.8075" x2="25.3975" y2="3.4925" width="0.6096" layer="16"/>
<contactref element="IC4" pad="6"/>
<wire x1="27.365" y1="10.16" x2="26.3525" y2="10.16" width="0.6096" layer="16"/>
<wire x1="26.3525" y1="10.16" x2="25.7175" y2="9.525" width="0.6096" layer="16"/>
<wire x1="25.7175" y1="9.525" x2="25.7175" y2="4.445" width="0.6096" layer="16"/>
<wire x1="25.7175" y1="4.445" x2="25.4" y2="4.1275" width="0.6096" layer="16"/>
<wire x1="25.4" y1="4.1275" x2="25.4" y2="3.8075" width="0.6096" layer="16"/>
<wire x1="25.4" y1="3.495" x2="25.3975" y2="3.4925" width="0.6096" layer="16"/>
</signal>
<signal name="N$39">
<contactref element="D1" pad="C"/>
<contactref element="C5" pad="1"/>
<contactref element="IC4" pad="13"/>
<contactref element="C3" pad="1"/>
<wire x1="23.54125" y1="6.82625" x2="23.3825" y2="7.34875" width="0.6096" layer="16"/>
<wire x1="23.3825" y1="7.34875" x2="23.8125" y2="7.77875" width="0.6096" layer="16"/>
<wire x1="23.8125" y1="7.77875" x2="23.8125" y2="11.27125" width="0.6096" layer="16"/>
<wire x1="23.8125" y1="11.27125" x2="24.4475" y2="11.90625" width="0.6096" layer="16"/>
<wire x1="24.4475" y1="11.90625" x2="24.4475" y2="14.76375" width="0.6096" layer="16"/>
<wire x1="24.4475" y1="14.76375" x2="23.97125" y2="15.24" width="0.6096" layer="16"/>
<wire x1="23.97125" y1="15.24" x2="22.165" y2="15.24" width="0.6096" layer="16"/>
<wire x1="22.165" y1="15.24" x2="21.11375" y2="15.24" width="0.6096" layer="16"/>
<wire x1="21.11375" y1="15.24" x2="19.52625" y2="16.1925" width="0.6096" layer="16"/>
<wire x1="19.52625" y1="16.1925" x2="18.545" y2="16.1925" width="0.6096" layer="16"/>
<wire x1="18.545" y1="16.1925" x2="18.415" y2="16.3225" width="0.6096" layer="16"/>
<wire x1="18.415" y1="16.3225" x2="18.415" y2="16.1925" width="0.6096" layer="16"/>
<wire x1="18.415" y1="16.1925" x2="16.48125" y2="16.1925" width="0.6096" layer="16"/>
<wire x1="16.48125" y1="16.1925" x2="16.35125" y2="16.3225" width="0.6096" layer="16"/>
</signal>
<signal name="SD0">
<contactref element="R7" pad="2"/>
<contactref element="JP1" pad="4"/>
<contactref element="IC4" pad="2"/>
<wire x1="30.4775" y1="4.7625" x2="30.4775" y2="2.0345" width="0.3048" layer="16"/>
<wire x1="30.4775" y1="2.0345" x2="30.48" y2="2.032" width="0.3048" layer="16"/>
<wire x1="30.4775" y1="4.7625" x2="30.4775" y2="5.0775" width="0.3048" layer="16"/>
<wire x1="30.4775" y1="5.0775" x2="30.95625" y2="5.55625" width="0.3048" layer="16"/>
<wire x1="30.95625" y1="5.55625" x2="33.02" y2="5.55625" width="0.3048" layer="16"/>
<wire x1="33.02" y1="5.55625" x2="33.9725" y2="6.50875" width="0.3048" layer="16"/>
<wire x1="33.9725" y1="6.50875" x2="33.9725" y2="13.0175" width="0.3048" layer="16"/>
<wire x1="33.9725" y1="13.0175" x2="31.75" y2="15.24" width="0.3048" layer="16"/>
<wire x1="31.75" y1="15.24" x2="27.365" y2="15.24" width="0.3048" layer="16"/>
</signal>
<signal name="PWM0">
<contactref element="JP1" pad="2"/>
<contactref element="IC4" pad="1"/>
<wire x1="27.365" y1="16.51" x2="28.575" y2="16.51" width="0.3048" layer="16"/>
<wire x1="28.575" y1="16.51" x2="29.21" y2="15.875" width="0.3048" layer="16"/>
<wire x1="29.21" y1="15.875" x2="32.0675" y2="15.875" width="0.3048" layer="16"/>
<wire x1="32.0675" y1="15.875" x2="34.6075" y2="13.335" width="0.3048" layer="16"/>
<wire x1="34.6075" y1="13.335" x2="34.6075" y2="6.19125" width="0.3048" layer="16"/>
<wire x1="34.6075" y1="6.19125" x2="33.02" y2="4.60375" width="0.3048" layer="16"/>
<wire x1="33.02" y1="4.60375" x2="33.02" y2="2.032" width="0.3048" layer="16"/>
</signal>
<signal name="N$5" class="1">
<contactref element="R6" pad="1"/>
<contactref element="D4" pad="A"/>
<contactref element="T3" pad="4"/>
<contactref element="R10" pad="1"/>
<wire x1="6.985" y1="10.9855" x2="6.985" y2="12.6975" width="0.6096" layer="1"/>
<wire x1="6.985" y1="12.6975" x2="7.305" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="7.305" y1="13.0175" x2="7.305" y2="13.45" width="0.6096" layer="1"/>
<wire x1="11.75" y1="13.015" x2="11.75" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="9.8425" y1="14.9225" x2="11.75" y2="13.015" width="0.6096" layer="1"/>
<wire x1="7.305" y1="13.45" x2="7.1" y2="13.45" width="0.6096" layer="1"/>
<wire x1="7.1" y1="13.45" x2="6.985" y2="13.335" width="0.6096" layer="1"/>
<wire x1="6.985" y1="13.335" x2="6.985" y2="14.605" width="0.6096" layer="1"/>
<wire x1="6.985" y1="14.605" x2="7.62" y2="15.24" width="0.6096" layer="1"/>
<wire x1="7.62" y1="15.24" x2="9.8425" y2="15.24" width="0.6096" layer="1"/>
<wire x1="9.8425" y1="15.24" x2="9.8425" y2="14.9225" width="0.6096" layer="1"/>
<wire x1="9.8425" y1="14.9225" x2="10.0475" y2="15.24" width="0.6096" layer="1"/>
</signal>
<signal name="N$8" class="1">
<contactref element="R6" pad="2"/>
<contactref element="R13" pad="1"/>
<wire x1="13.65" y1="13.0175" x2="15.555" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="15.555" y1="13.0175" x2="15.5575" y2="13.02" width="0.6096" layer="1"/>
<wire x1="15.56" y1="13.0175" x2="15.5575" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="15.56" y1="13.0175" x2="17.30375" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="15.5575" y1="13.02" x2="15.56" y2="13.0175" width="0.6096" layer="1"/>
<contactref element="IC5" pad="12"/>
<wire x1="25.6575" y1="10.795" x2="19.52625" y2="10.795" width="0.6096" layer="1"/>
<wire x1="19.52625" y1="10.795" x2="17.30375" y2="13.0175" width="0.6096" layer="1"/>
</signal>
<signal name="N$9" class="1">
<contactref element="R8" pad="2"/>
<contactref element="R15" pad="1"/>
<wire x1="24.765" y1="6.82375" x2="25.4025" y2="6.985" width="0.6096" layer="1"/>
<wire x1="20.47875" y1="7.3" x2="20.79625" y2="6.985" width="0.6096" layer="1"/>
<wire x1="20.79625" y1="6.985" x2="21.43125" y2="7.62" width="0.6096" layer="1"/>
<wire x1="21.43125" y1="7.62" x2="23.65375" y2="7.62" width="0.6096" layer="1"/>
<wire x1="23.65375" y1="7.62" x2="24.765" y2="6.50875" width="0.6096" layer="1"/>
<wire x1="24.765" y1="6.50875" x2="24.7625" y2="6.50875" width="0.6096" layer="1"/>
<wire x1="24.7625" y1="6.50875" x2="24.765" y2="6.82375" width="0.6096" layer="1"/>
<contactref element="IC5" pad="6"/>
<wire x1="27.305" y1="7.46125" x2="27.305" y2="8.89" width="0.6096" layer="1"/>
<wire x1="27.305" y1="8.89" x2="28.2575" y2="9.8425" width="0.6096" layer="1"/>
<wire x1="28.2575" y1="9.8425" x2="28.2575" y2="13.97" width="0.6096" layer="1"/>
<wire x1="28.2575" y1="13.97" x2="28.8925" y2="14.605" width="0.6096" layer="1"/>
<wire x1="28.8925" y1="14.605" x2="30.8575" y2="14.605" width="0.6096" layer="1"/>
<wire x1="25.4025" y1="6.985" x2="26.82875" y2="6.985" width="0.6096" layer="1"/>
<wire x1="26.82875" y1="6.985" x2="27.305" y2="7.46125" width="0.6096" layer="1"/>
</signal>
<signal name="N$10">
<contactref element="D2" pad="C"/>
<contactref element="C2" pad="1"/>
<contactref element="IC5" pad="13"/>
<wire x1="26.5575" y1="17.62125" x2="26.67" y2="17.78" width="0.6096" layer="1"/>
<wire x1="26.67" y1="17.78" x2="27.305" y2="17.145" width="0.6096" layer="1"/>
<wire x1="27.305" y1="17.145" x2="27.305" y2="10.16" width="0.6096" layer="1"/>
<wire x1="27.305" y1="10.16" x2="26.67" y2="9.525" width="0.6096" layer="1"/>
<wire x1="26.67" y1="9.525" x2="25.6575" y2="9.525" width="0.6096" layer="1"/>
<contactref element="C6" pad="1"/>
<wire x1="25.6575" y1="9.525" x2="23.3075" y2="9.525" width="0.6096" layer="1"/>
<wire x1="23.3075" y1="9.525" x2="23.33625" y2="9.395" width="0.6096" layer="1"/>
<wire x1="23.33625" y1="9.395" x2="23.1775" y2="9.525" width="0.6096" layer="1"/>
<wire x1="23.1775" y1="9.525" x2="21.085" y2="9.525" width="0.6096" layer="1"/>
<wire x1="21.085" y1="9.525" x2="21.2725" y2="9.395" width="0.6096" layer="1"/>
</signal>
<signal name="N$13">
<contactref element="R8" pad="1"/>
<contactref element="D6" pad="A"/>
<contactref element="T4" pad="4"/>
<contactref element="R9" pad="1"/>
<wire x1="17.30375" y1="5.08" x2="17.30375" y2="5.3375" width="0.6096" layer="1"/>
<wire x1="17.78" y1="5.55625" x2="17.30375" y2="5.08" width="0.6096" layer="1"/>
<wire x1="20.15875" y1="5.08" x2="20.0025" y2="5.08" width="0.6096" layer="1"/>
<wire x1="20.0025" y1="5.08" x2="19.52625" y2="5.55625" width="0.6096" layer="1"/>
<wire x1="19.52625" y1="5.55625" x2="17.78" y2="5.55625" width="0.6096" layer="1"/>
<wire x1="20.47875" y1="5.4" x2="20.15875" y2="5.08" width="0.6096" layer="1"/>
<wire x1="20.15875" y1="5.08" x2="20.15875" y2="5.0775" width="0.6096" layer="1"/>
<wire x1="20.15875" y1="5.0775" x2="20.0025" y2="4.92125" width="0.6096" layer="1"/>
<wire x1="20.0025" y1="4.92125" x2="20.0025" y2="2.69875" width="0.6096" layer="1"/>
<wire x1="20.0025" y1="2.69875" x2="20.47875" y2="2.2225" width="0.6096" layer="1"/>
<wire x1="20.47875" y1="2.2225" x2="22.49625" y2="2.2225" width="0.6096" layer="1"/>
<wire x1="22.49625" y1="2.2225" x2="22.70125" y2="2.4275" width="0.6096" layer="1"/>
<wire x1="22.70125" y1="2.4275" x2="23.3825" y2="2.4275" width="0.6096" layer="1"/>
<wire x1="23.3825" y1="2.4275" x2="24.13" y2="3.175" width="0.6096" layer="1"/>
<wire x1="24.13" y1="3.175" x2="24.7625" y2="3.175" width="0.6096" layer="1"/>
<wire x1="24.7625" y1="3.175" x2="24.765" y2="3.1725" width="0.6096" layer="1"/>
</signal>
<signal name="PWM1">
<contactref element="JP1" pad="1"/>
<contactref element="IC5" pad="1"/>
<wire x1="30.8575" y1="8.255" x2="30.7975" y2="8.255" width="0.4064" layer="1"/>
<wire x1="30.7975" y1="8.255" x2="31.27375" y2="7.77875" width="0.4064" layer="1"/>
<wire x1="31.27375" y1="7.77875" x2="31.27375" y2="6.19125" width="0.4064" layer="1"/>
<wire x1="31.27375" y1="6.19125" x2="33.02" y2="4.445" width="0.4064" layer="1"/>
<wire x1="33.02" y1="4.445" x2="33.02" y2="2.032" width="0.4064" layer="1"/>
</signal>
<signal name="+15V">
<contactref element="D1" pad="A"/>
<contactref element="C4" pad="1"/>
<contactref element="D2" pad="A"/>
<contactref element="C1" pad="1"/>
<contactref element="IC4" pad="7"/>
<contactref element="IC5" pad="7"/>
<wire x1="29.9575" y1="17.62125" x2="29.9575" y2="17.575" width="0.6096" layer="1"/>
<wire x1="29.9575" y1="17.575" x2="29.21" y2="16.8275" width="0.6096" layer="1"/>
<wire x1="29.21" y1="16.8275" x2="29.21" y2="16.1925" width="0.6096" layer="1"/>
<wire x1="29.21" y1="16.1925" x2="29.5275" y2="15.875" width="0.6096" layer="1"/>
<wire x1="29.5275" y1="15.875" x2="30.8575" y2="15.875" width="0.6096" layer="1"/>
<contactref element="C10" pad="1"/>
<contactref element="C11" pad="1"/>
<contactref element="JP1" pad="6"/>
<wire x1="27.365" y1="8.89" x2="29.845" y2="8.89" width="0.6096" layer="16"/>
<wire x1="29.845" y1="8.89" x2="31.59375" y2="8.89" width="0.6096" layer="16"/>
<wire x1="31.59375" y1="8.89" x2="31.75" y2="8.73375" width="0.6096" layer="16"/>
<wire x1="29.845" y1="8.28375" x2="29.845" y2="8.89" width="0.6096" layer="16"/>
<wire x1="26.94125" y1="6.82625" x2="26.82875" y2="6.82625" width="0.6096" layer="16"/>
<wire x1="26.82875" y1="6.82625" x2="26.67" y2="6.985" width="0.6096" layer="16"/>
<wire x1="26.67" y1="6.985" x2="26.67" y2="3.96875" width="0.6096" layer="16"/>
<wire x1="26.67" y1="3.96875" x2="27.94" y2="2.69875" width="0.6096" layer="16"/>
<wire x1="27.94" y1="2.69875" x2="27.94" y2="2.032" width="0.6096" layer="16"/>
<wire x1="27.365" y1="8.89" x2="27.14625" y2="8.89" width="0.6096" layer="16"/>
<wire x1="27.14625" y1="8.89" x2="26.67" y2="8.41375" width="0.6096" layer="16"/>
<wire x1="26.67" y1="8.41375" x2="26.67" y2="7.0975" width="0.6096" layer="16"/>
<wire x1="26.67" y1="7.0975" x2="26.94125" y2="6.82625" width="0.6096" layer="16"/>
<wire x1="31.75" y1="8.73375" x2="31.75" y2="7.77875" width="0.6096" layer="16"/>
<wire x1="31.75" y1="7.77875" x2="32.22625" y2="7.3025" width="0.6096" layer="16"/>
<via x="32.22625" y="7.3025" extent="1-16" drill="0.5"/>
<wire x1="32.22625" y1="7.3025" x2="34.13125" y2="7.3025" width="0.6096" layer="1"/>
<wire x1="34.13125" y1="7.3025" x2="34.925" y2="8.09625" width="0.6096" layer="1"/>
<wire x1="34.925" y1="8.09625" x2="34.925" y2="8.72875" width="0.6096" layer="1"/>
<wire x1="34.925" y1="8.72875" x2="34.9225" y2="8.73125" width="0.6096" layer="1"/>
<wire x1="34.925" y1="8.72875" x2="34.925" y2="9.525" width="0.6096" layer="1"/>
<wire x1="34.925" y1="9.525" x2="36.195" y2="10.795" width="0.6096" layer="1"/>
<wire x1="36.195" y1="10.795" x2="36.195" y2="13.97" width="0.6096" layer="1"/>
<wire x1="36.195" y1="13.97" x2="34.29" y2="15.875" width="0.6096" layer="1"/>
<wire x1="34.29" y1="15.875" x2="33.3375" y2="15.875" width="0.6096" layer="1"/>
<wire x1="33.3375" y1="15.875" x2="30.8575" y2="15.875" width="0.6096" layer="1"/>
<wire x1="33.3375" y1="16.64" x2="33.3375" y2="15.875" width="0.6096" layer="1"/>
</signal>
<signal name="N$12">
<contactref element="D3" pad="C"/>
<contactref element="R12" pad="2"/>
<wire x1="14.2875" y1="16.19" x2="13.0175" y2="16.1925" width="0.6096" layer="16"/>
<wire x1="13.0175" y1="16.1925" x2="12.22375" y2="15.39875" width="0.6096" layer="16"/>
<wire x1="12.22375" y1="15.39875" x2="12.1775" y2="15.39875" width="0.6096" layer="16"/>
</signal>
<signal name="N$14">
<contactref element="R13" pad="2"/>
<contactref element="D4" pad="C"/>
<wire x1="13.4475" y1="15.24" x2="14.605" y2="15.24" width="0.6096" layer="1"/>
<wire x1="14.605" y1="15.24" x2="14.9225" y2="14.9225" width="0.6096" layer="1"/>
<wire x1="14.9225" y1="14.9225" x2="15.555" y2="14.9225" width="0.6096" layer="1"/>
<wire x1="15.555" y1="14.9225" x2="15.5575" y2="14.92" width="0.6096" layer="1"/>
</signal>
<signal name="N$18">
<contactref element="R14" pad="2"/>
<contactref element="D5" pad="C"/>
<wire x1="20.8425" y1="1.5875" x2="23.4975" y2="1.5875" width="0.6096" layer="16"/>
<wire x1="20.6375" y1="1.475" x2="20.8425" y2="1.5875" width="0.6096" layer="16"/>
</signal>
<signal name="N$19">
<contactref element="D6" pad="C"/>
<contactref element="R15" pad="2"/>
<wire x1="24.765" y1="4.92375" x2="24.28625" y2="4.92375" width="0.6096" layer="1"/>
<wire x1="24.28625" y1="4.92375" x2="23.33625" y2="5.87375" width="0.6096" layer="1"/>
<wire x1="23.33625" y1="5.87375" x2="22.7475" y2="5.87375" width="0.6096" layer="1"/>
<wire x1="22.7475" y1="5.87375" x2="22.70125" y2="5.8275" width="0.6096" layer="1"/>
</signal>
<signal name="N$2">
<contactref element="T4" pad="6"/>
<contactref element="T4" pad="5"/>
<contactref element="T4" pad="7"/>
<contactref element="C2" pad="2"/>
<contactref element="T3" pad="3"/>
<contactref element="T3" pad="2"/>
<contactref element="T3" pad="1"/>
<contactref element="T4" pad="8"/>
<contactref element="R10" pad="2"/>
<contactref element="JP2" pad="1"/>
<contactref element="JP2" pad="3"/>
<wire x1="6.0325" y1="7.9375" x2="5.08" y2="6.985" width="1.4224" layer="1"/>
<wire x1="6.0325" y1="7.9375" x2="16.51" y2="7.9375" width="1.4224" layer="1"/>
<wire x1="16.51" y1="7.9375" x2="17.145" y2="8.5725" width="1.4224" layer="1"/>
<wire x1="17.145" y1="8.5725" x2="17.145" y2="10.4775" width="1.4224" layer="1"/>
<wire x1="9.525" y1="10.5375" x2="9.525" y2="12.6975" width="0.6096" layer="1"/>
<wire x1="9.525" y1="12.6975" x2="9.205" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="19.05" y1="9.8425" x2="19.685" y2="10.4775" width="0.8128" layer="16"/>
<wire x1="19.685" y1="10.4775" x2="19.685" y2="12.065" width="0.8128" layer="16"/>
<via x="19.685" y="12.065" extent="1-16" drill="0.5"/>
<via x="19.05" y="9.8425" extent="1-16" drill="0.5"/>
<polygon width="0.4064" layer="1" isolate="0.3048" thermals="no" rank="2">
<vertex x="-0.635" y="-1.27"/>
<vertex x="6.0325" y="-1.27"/>
<vertex x="6.0325" y="6.6675"/>
<vertex x="6.35" y="6.985"/>
<vertex x="18.415" y="6.985"/>
<vertex x="19.685" y="7.62"/>
<vertex x="19.685" y="12.7"/>
<vertex x="11.43" y="12.7"/>
<vertex x="10.16" y="13.97"/>
<vertex x="8.5725" y="13.97"/>
<vertex x="8.255" y="13.6525"/>
<vertex x="8.255" y="12.065"/>
<vertex x="7.9375" y="11.7475"/>
<vertex x="7.9375" y="11.1125"/>
<vertex x="7.62" y="10.795"/>
<vertex x="-0.635" y="10.795"/>
</polygon>
<contactref element="IC5" pad="11"/>
<contactref element="C6" pad="2"/>
<wire x1="25.6575" y1="12.065" x2="23.3075" y2="12.065" width="0.6096" layer="1"/>
<wire x1="23.3075" y1="12.065" x2="23.33625" y2="12.195" width="0.6096" layer="1"/>
<wire x1="21.2725" y1="12.195" x2="20.955" y2="12.22375" width="0.6096" layer="1"/>
<wire x1="21.2725" y1="12.195" x2="20.955" y2="12.065" width="0.6096" layer="1"/>
<wire x1="20.955" y1="12.065" x2="23.0475" y2="12.065" width

repository: WouterHellemans/loa

license_type: permissive

repo_name: WouterHellemans/loa

branch_name: refs/heads/master

extension: brd


text:
="0.6096" layer="1"/>
<wire x1="23.0475" y1="12.065" x2="23.33625" y2="12.195" width="0.6096" layer="1"/>
<wire x1="19.685" y1="12.065" x2="21.2725" y2="12.03625" width="0.6096" layer="1"/>
<wire x1="21.2725" y1="12.03625" x2="21.2725" y2="12.195" width="0.6096" layer="1"/>
</signal>
<signal name="N$16" class="1">
<contactref element="R5" pad="1"/>
<contactref element="R3" pad="1"/>
<contactref element="D5" pad="A"/>
<contactref element="T2" pad="4"/>
<wire x1="13.335" y1="5.3375" x2="13.335" y2="6.6675" width="0.6096" layer="16"/>
<wire x1="13.335" y1="6.6675" x2="13.6525" y2="6.985" width="0.6096" layer="16"/>
<wire x1="13.6525" y1="6.985" x2="18.57375" y2="6.985" width="0.6096" layer="16"/>
<wire x1="18.57375" y1="6.985" x2="20.6375" y2="4.92125" width="0.6096" layer="16"/>
<wire x1="20.6375" y1="4.92125" x2="20.6375" y2="4.875" width="0.6096" layer="16"/>
<wire x1="20.6375" y1="4.875" x2="20.8425" y2="4.5575" width="0.6096" layer="16"/>
<wire x1="20.8425" y1="4.5575" x2="21.9075" y2="3.4925" width="0.6096" layer="16"/>
<wire x1="21.9075" y1="3.4925" x2="23.4975" y2="3.4925" width="0.6096" layer="16"/>
<wire x1="12.7" y1="3.1725" x2="12.7" y2="3.33375" width="0.6096" layer="16"/>
<wire x1="12.7" y1="3.33375" x2="13.335" y2="3.96875" width="0.6096" layer="16"/>
<wire x1="13.335" y1="3.96875" x2="13.335" y2="5.3375" width="0.6096" layer="16"/>
</signal>
<signal name="DT0">
<contactref element="IC4" pad="4"/>
<contactref element="R16" pad="2"/>
<wire x1="27.365" y1="12.7" x2="29.37125" y2="12.7" width="0.4064" layer="16"/>
<wire x1="29.37125" y1="12.7" x2="29.68875" y2="13.0175" width="0.4064" layer="16"/>
</signal>
<signal name="SD1">
<contactref element="IC5" pad="2"/>
<contactref element="R18" pad="2"/>
<contactref element="JP1" pad="3"/>
<wire x1="30.48" y1="2.032" x2="30.48" y2="4.445" width="0.4064" layer="1"/>
<wire x1="30.48" y1="4.445" x2="30.48" y2="4.76" width="0.4064" layer="1"/>
<wire x1="30.48" y1="4.76" x2="30.4775" y2="4.7625" width="0.4064" layer="1"/>
<wire x1="30.4775" y1="4.7625" x2="30.4775" y2="4.4475" width="0.3048" layer="1"/>
<wire x1="30.4775" y1="4.4475" x2="30.48" y2="4.445" width="0.3048" layer="1"/>
<wire x1="30.48" y1="4.445" x2="30.48" y2="6.35" width="0.3048" layer="1"/>
<wire x1="30.48" y1="6.35" x2="29.36875" y2="7.46125" width="0.3048" layer="1"/>
<wire x1="29.36875" y1="7.46125" x2="29.36875" y2="8.73125" width="0.3048" layer="1"/>
<wire x1="29.36875" y1="8.73125" x2="30.1625" y2="9.525" width="0.3048" layer="1"/>
<wire x1="30.1625" y1="9.525" x2="30.8575" y2="9.525" width="0.3048" layer="1"/>
</signal>
<signal name="DT1">
<contactref element="IC5" pad="4"/>
<contactref element="R17" pad="2"/>
<wire x1="30.8575" y1="12.065" x2="32.86375" y2="12.065" width="0.4064" layer="1"/>
<wire x1="32.86375" y1="12.065" x2="33.0225" y2="11.90625" width="0.4064" layer="1"/>
</signal>
<signal name="N$22">
<contactref element="R9" pad="2"/>
<contactref element="T4" pad="1"/>
<contactref element="T4" pad="2"/>
<contactref element="T4" pad="3"/>
<contactref element="IC5" pad="5"/>
<contactref element="JP4" pad="1"/>
<contactref element="JP4" pad="3"/>
<polygon width="0.4064" layer="1" isolate="0.3048" thermals="no">
<vertex x="12.7" y="6.35"/>
<vertex x="19.685" y="6.35"/>
<vertex x="19.685" y="-0.9525"/>
<vertex x="12.7" y="-0.9525"/>
</polygon>
<contactref element="C10" pad="2"/>
<wire x1="30.8575" y1="13.335" x2="33.3375" y2="13.335" width="0.6096" layer="1"/>
<wire x1="33.3375" y1="13.335" x2="33.3375" y2="13.84" width="0.6096" layer="1"/>
<wire x1="30.8575" y1="13.335" x2="29.5275" y2="13.335" width="0.6096" layer="1"/>
<wire x1="29.5275" y1="13.335" x2="29.21" y2="13.0175" width="0.6096" layer="1"/>
<wire x1="29.21" y1="13.0175" x2="29.21" y2="9.525" width="0.6096" layer="1"/>
<wire x1="18.70075" y1="1.11125" x2="17.78" y2="2.032" width="0.6096" layer="1"/>
<wire x1="26.19375" y1="1.5875" x2="26.19375" y2="4.92125" width="0.6096" layer="1"/>
<wire x1="26.19375" y1="4.92125" x2="28.2575" y2="6.985" width="0.6096" layer="1"/>
<wire x1="28.2575" y1="6.985" x2="28.2575" y2="8.5725" width="0.6096" layer="1"/>
<wire x1="28.2575" y1="8.5725" x2="29.21" y2="9.525" width="0.6096" layer="1"/>
<wire x1="25.7175" y1="1.11125" x2="26.19375" y2="1.5875" width="0.6096" layer="1"/>
<wire x1="24.765" y1="1.2725" x2="24.60875" y2="1.2725" width="0.6096" layer="1"/>
<wire x1="24.60875" y1="1.2725" x2="24.4475" y2="1.11125" width="0.6096" layer="1"/>
<wire x1="24.4475" y1="1.11125" x2="18.70075" y2="1.11125" width="0.6096" layer="1"/>
<wire x1="25.7175" y1="1.11125" x2="24.92625" y2="1.11125" width="0.6096" layer="1"/>
<wire x1="24.92625" y1="1.11125" x2="24.765" y2="1.2725" width="0.6096" layer="1"/>
</signal>
<signal name="N$23">
<contactref element="T2" pad="1"/>
<contactref element="T2" pad="2"/>
<contactref element="T2" pad="3"/>
<contactref element="R5" pad="2"/>
<contactref element="JP4" pad="2"/>
<contactref element="JP4" pad="4"/>
<contactref element="IC4" pad="5"/>
<wire x1="17.78" y1="2.032" x2="18.288" y2="2.032" width="0.6096" layer="16"/>
<wire x1="12.7" y1="1.2725" x2="12.85625" y2="1.11375" width="0.6096" layer="16"/>
<wire x1="12.85625" y1="1.11375" x2="13.0175" y2="1.11125" width="0.6096" layer="16"/>
<wire x1="13.0175" y1="1.11125" x2="14.605" y2="1.11125" width="0.6096" layer="16"/>
<polygon width="0.4064" layer="16" isolate="0.3048" thermals="no">
<vertex x="13.97" y="6.35"/>
<vertex x="19.05" y="6.35"/>
<vertex x="19.05" y="-1.5875"/>
<vertex x="13.97" y="-0.3175"/>
</polygon>
<contactref element="C11" pad="2"/>
<wire x1="27.365" y1="11.43" x2="29.49875" y2="11.43" width="0.6096" layer="16"/>
<wire x1="29.49875" y1="11.43" x2="29.845" y2="11.08375" width="0.6096" layer="16"/>
<wire x1="27.365" y1="11.43" x2="25.4" y2="11.43" width="0.6096" layer="16"/>
<wire x1="25.4" y1="11.43" x2="24.765" y2="10.795" width="0.6096" layer="16"/>
<wire x1="24.765" y1="10.795" x2="24.765" y2="5.715" width="0.6096" layer="16"/>
<wire x1="24.765" y1="5.715" x2="24.13" y2="5.08" width="0.6096" layer="16"/>
<wire x1="24.13" y1="5.08" x2="22.86" y2="5.08" width="0.6096" layer="16"/>
<wire x1="18.288" y1="2.032" x2="18.288" y2="2.88925" width="0.6096" layer="16"/>
<wire x1="18.57375" y1="3.175" x2="18.7325" y2="3.33375" width="0.6096" layer="16"/>
<wire x1="22.86" y1="5.08" x2="22.225" y2="4.445" width="0.6096" layer="16"/>
<via x="22.225" y="4.445" extent="1-16" drill="0.5"/>
<wire x1="22.225" y1="4.445" x2="20.955" y2="3.175" width="0.6096" layer="1"/>
<via x="20.955" y="3.175" extent="1-16" drill="0.5"/>
<wire x1="20.955" y1="3.175" x2="18.57375" y2="3.175" width="0.6096" layer="16"/>
<wire x1="18.57375" y1="3.175" x2="18.288" y2="2.88925" width="0.6096" layer="16"/>
</signal>
<signal name="N$17">
<contactref element="T3" pad="5"/>
<contactref element="T3" pad="6"/>
<contactref element="T3" pad="7"/>
<contactref element="T3" pad="8"/>
<contactref element="JP3" pad="1"/>
<contactref element="JP3" pad="3"/>
<polygon width="0.4064" layer="1" isolate="0.3048" thermals="no">
<vertex x="6.6675" y="6.35"/>
<vertex x="11.43" y="6.35"/>
<vertex x="11.43" y="-0.9525"/>
<vertex x="6.6675" y="-0.9525"/>
</polygon>
</signal>
<signal name="N$21">
<contactref element="T1" pad="5"/>
<contactref element="T1" pad="6"/>
<contactref element="T1" pad="7"/>
<contactref element="T1" pad="8"/>
<contactref element="JP3" pad="4"/>
<contactref element="JP3" pad="2"/>
<polygon width="0.4064" layer="16" isolate="0.3048" thermals="no">
<vertex x="6.6675" y="6.35"/>
<vertex x="11.43" y="6.35"/>
<vertex x="11.43" y="-0.3175"/>
<vertex x="6.6675" y="-0.635"/>
</polygon>
</signal>
<signal name="N$3">
<contactref element="JP2" pad="2"/>
<contactref element="JP2" pad="4"/>
<contactref element="T2" pad="6"/>
<contactref element="T2" pad="5"/>
<contactref element="T2" pad="7"/>
<contactref element="C5" pad="2"/>
<contactref element="T1" pad="3"/>
<contactref element="T1" pad="2"/>
<contactref element="T1" pad="1"/>
<contactref element="T2" pad="8"/>
<contactref element="R4" pad="2"/>
<contactref element="IC4" pad="11"/>
<contactref element="C3" pad="2"/>
<wire x1="22.165" y1="12.7" x2="21.11375" y2="12.7" width="0.6096" layer="16"/>
<wire x1="21.11375" y1="12.7" x2="19.685" y2="13.49375" width="0.6096" layer="16"/>
<wire x1="19.685" y1="13.49375" x2="18.76125" y2="13.49375" width="0.6096" layer="16"/>
<wire x1="18.76125" y1="13.49375" x2="18.415" y2="13.5225" width="0.6096" layer="16"/>
<wire x1="18.415" y1="13.5225" x2="18.415" y2="13.49375" width="0.6096" layer="16"/>
<wire x1="18.415" y1="13.49375" x2="16.38" y2="13.49375" width="0.6096" layer="16"/>
<wire x1="16.38" y1="13.49375" x2="16.35125" y2="13.5225" width="0.6096" layer="16"/>
<polygon width="0.4064" layer="16" isolate="0.3048" thermals="no" rank="4">
<vertex x="5.715" y="-0.635"/>
<vertex x="5.715" y="6.35"/>
<vertex x="6.35" y="6.985"/>
<vertex x="19.05" y="6.985"/>
<vertex x="19.05" y="12.065"/>
<vertex x="23.1775" y="12.065"/>
<vertex x="23.495" y="12.3825"/>
<vertex x="23.495" y="13.17625"/>
<vertex x="23.1775" y="13.49375"/>
<vertex x="21.43125" y="13.49375"/>
<vertex x="20.47875" y="14.44625"/>
<vertex x="14.44625" y="14.44625"/>
<vertex x="12.7" y="12.7"/>
<vertex x="10.16" y="12.7"/>
<vertex x="8.89" y="13.97"/>
<vertex x="-0.635" y="13.97"/>
<vertex x="-0.635" y="-0.635"/>
</polygon>
</signal>
</signals>
<errors>
<approved hash="19,1,886c54952db0f7a5"/>
<approved hash="5,1,5837808b02b9d978"/>
</errors>
</board>
</drawing>
</eagle>


text:
#ifndef RecoDataProducts_CaloHit_hh
#define RecoDataProducts_CaloHit_hh

#include "Offline/RecoDataProducts/inc/CaloRecoDigi.hh"
#include "canvas/Persistency/Common/Ptr.h"

#include <vector>
#include <map>

namespace mu2e {

   class CaloHit
   {
       public:
          CaloHit(): crystalId_(-1),nSiPMs_(0),time_(0.),eDep_(0.),eDepErr_(0.),timeErr_(0.),recoCaloDigis_()
          {}

          CaloHit(int crystalId, int nSiPMs, float time, float timeErr, float eDep, float eDepErr,
                  std::vector<art::Ptr<CaloRecoDigi>> &CaloRecoDigi)  :
                    crystalId_(crystalId),nSiPMs_(nSiPMs),time_(time),eDep_(eDep),
                    eDepErr_(eDepErr),timeErr_(timeErr),recoCaloDigis_(CaloRecoDigi)
          {}

          CaloHit(int crystalId, int nSiPMs, float time, float eDep)  :
            crystalId_(crystalId),nSiPMs_(nSiPMs),time_(time),eDep_(eDep),
            eDepErr_(0),timeErr_(0)
          {}

          int                                          crystalID      () const { return crystalId_; }
          int                                          nSiPMs         () const { return nSiPMs_;}
          float                                        time           () const { return time_;}
          float                                        timeErr        () const { return timeErr_;}
          float                                        energyDep      () const { return eDep_;}
          float                                        energyDepErr   () const { return eDepErr_;}
          float                                        energyDepTot   () const { return eDep_*nSiPMs_;}
          float                                        energyDepTotErr() const { return eDepErr_*nSiPMs_;}
          const std::vector<art::Ptr<CaloRecoDigi>>&   recoCaloDigis  () const { return recoCaloDigis_;}

          void     setCrystalID      (int  ID) { crystalId_ = ID; }
          void     setNSiPMs         (int   N) { nSiPMs_    = N;  }
          void     setTime           (float T) { time_      = T;  }
          void     setEDep           (float E) { eDep_      = E;  }

        private:
          int    crystalId_;
          int    nSiPMs_;
          float  time_;
          float  eDep_;
          float  eDepErr_;
          float  timeErr_;
          std::vector<art::Ptr<CaloRecoDigi>> recoCaloDigis_;

   };

   using CaloHitPtr        = art::Ptr<CaloHit>;
   using CaloHitPtrVector  = std::vector<CaloHitPtr>;
   using CaloHitCollection = std::vector<mu2e::CaloHit> ;
   using CaloHitRemapping  = std::map<art::Ptr<CaloHit>,art::Ptr<CaloHit>>;
}

#endif

branch_name: refs/heads/main

extension: hh


text:
SUMMARY = "Fluxbox is a lightweight windowmanager for X"
HOMEPAGE = "http://fluxbox.org/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=e90c7c0bee6fc368be0ba779e0eac053"

REQUIRED_DISTRO_FEATURES = "x11"

inherit autotools-brokensep pkgconfig features_check manpages

DEPENDS = " \
    virtual/libx11 \
    libxinerama \
    libxrandr \
    libxft \
    libxpm \
    fontconfig \
    fribidi \
"

SRC_URI = " \
    ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
    file://0001-Fix-build-with-gcc11.patch \
    file://fluxbox.desktop \
"
SRC_URI[md5sum] = "d99d7710f9daf793e0246dae5304b595"
SRC_URI[sha256sum] = "c99e2baa06fff1e96342b20415059d12ff1fa2917ade0173c75b2fa570295b9f"

# in case of migration to other layer, build properly for missing
# HOSTTOOLS_NONFATAL += "gencat" in layer.conf
EXTRA_OECONF += "${@bb.utils.contains('HOSTTOOLS_NONFATAL', 'gencat', '--enable-nls', '--disable-nls', d)}"

do_install_append() {
    install -d ${D}/${datadir}/xsessions
    install -m 0644 -p ${WORKDIR}/fluxbox.desktop ${D}/${datadir}/xsessions
}

FILES_${PN} += "${datadir}/xsessions"

license: MIT

branch_name: refs/heads/nilrt/master/hardknott

gha_license_id: MIT

gha_language: BitBake

extension: bb


text:
using System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data;

namespace Csharp_e_MYSQL.Classes
{
    class DatabaseConnection
    {
        private string dbhost, dbnome, dbuser, dbpass;
        private int dbport;
        private MySqlConnection connection;
        private MySqlCommand command;

        public string Dbhost { get => dbhost; set => dbhost = value; }
        public string Dbnome { get => dbnome; set => dbnome = value; }
        public string Dbuser { get => dbuser; set => dbuser = value; }
        public string Dbpass { get => dbpass; set => dbpass = value; }
        public int Dbport { get => dbport; set => dbport = value; }

        public DatabaseConnection() //Inicializa a classe com valores de teste
        {
            dbhost = "127.0.0.1";
            dbnome = "dbteste";
            dbuser = "teste";
            dbpass = "teste";
            dbport = 3306;
            Connect();
        }

        public void Connect()  //ABRE CONEXÃO COM O BANCO DE DADOS
        {
            string ConString = $"server={dbhost};database={dbnome};uid={dbuser};pwd={dbpass};port={dbport}";
            try
            {
                connection = new MySqlConnection(ConString);
                command = connection.CreateCommand();
                connection.Open();
            }
            catch(Exception e)
            {
                MessageBox.Show("Falha ao conectar-se com o banco de dados! \n\n" + e, "Abrir Conexão", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void Close()  //FECHA A CONEXÃO COM O BANCO DE DADOS DEFINIDO PELA CLASSE
        {
            try
            {
                connection.Close();
            }
            catch(Exception e)
            {
                MessageBox.Show("Falha ao fechar conexão com o banco de dados! \n\n" + e, "Fechar Conexão", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void NonQuery(string sql)
        {
            command.CommandText = sql;
            command.ExecuteNonQuery();
        }

        public MySqlDataReader Query(string sql)
        {
            command.CommandText = sql;
            return command.ExecuteReader();
        }

        public DataTable FillDataTable(string sql, string operacao)
        {
            DataTable dt = new DataTable();
            MySqlDataReader MySqlDr;
            try
            {
                MySqlDr = Query(sql);
                dt.Load(MySqlDr);
                MySqlDr.Close();
                Close();
                return dt;
            }
            catch(Exception e)
            {
                dt = null;
                MessageBox.Show($"Falha ao tentar {operacao}! \n\n" + e, $"{operacao}", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dt;
            }
        }
    }
}

repository: petersonstadler/Csharp-e-MYSQL

repo_name: petersonstadler/Csharp-e-MYSQL

extension: cs


text:
// Copyright 2020, OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package sumologicexporter

import (
	"regexp"
	"testing"

	"github.com/stretchr/testify/assert"
)

func getTestSourceFormat(template string) sourceFormat {
	r := regexp.MustCompile(sourceRegex)

	return newSourceFormat(r, template)
}

func TestNewSourceFormat(t *testing.T) {
	expected := sourceFormat{
		matches: []string{
			"test",
		},
		template: "%s/test",
	}

	r := regexp.MustCompile(sourceRegex)

	s := newSourceFormat(r, "%{test}/test")

	assert.Equal(t, expected, s)
}

func TestNewSourceFormats(t *testing.T) {
	expected := sourceFormats{
		host: sourceFormat{
			matches: []string{
				"namespace",
			},
			template: "ns/%s",
		},
		name: sourceFormat{
			matches: []string{
				"pod",
			},
			template: "name/%s",
		},
		category: sourceFormat{
			matches: []string{
				"cluster",
			},
			template: "category/%s",
		},
	}

	cfg := &Config{
		SourceName:     "name/%{pod}",
		SourceHost:     "ns/%{namespace}",
		SourceCategory: "category/%{cluster}",
	}

	s := newSourceFormats(cfg)

	assert.Equal(t, expected, s)
}

func TestFormat(t *testing.T) {
	f := fieldsFromMap(map[string]string{
		"key_1":        "value_1",
		"key_2.subkey": "value_2",
	})
	s := getTestSourceFormat("%{key_1}/%{key_2.subkey}")
	expected := "value_1/value_2"

	result := s.format(f)
	assert.Equal(t, expected, result)
}

func TestFormatNonExistingKey(t *testing.T) {
	f := fieldsFromMap(map[string]string{"key_2": "value_2"})
	s := getTestSourceFormat("%{key_1}/%{key_2}")

	expected := "/value_2"

	result := s.format(f)
	assert.Equal(t, expected, result)
}

func TestIsSet(t *testing.T) {
	s := getTestSourceFormat("%{key_1}/%{key_2}")
	assert.True(t, s.isSet())
}

func TestIsNotSet(t *testing.T) {
	s := getTestSourceFormat("")
	assert.False(t, s.isSet())
}

repository: DataDog/opentelemetry-collector-contrib

repo_name: DataDog/opentelemetry-collector-contrib

gha_language: Go

extension: go