Selaa lähdekoodia

Fab automation (#2)

- Use KiKit for fab automation
- Add splitflap scripts for exporting pcb pdfs, and switch to splitflap script for 3d rendering (for consistency with fab automation)
- Added support in 3d rendering scripts for soldermask & silkscreen colors, option to skip virtual components
- Added silkscreen to base and screen pcbs for commit and date info
Scott Bezek 4 vuotta sitten
vanhempi
commit
56feeb484c

+ 53 - 4
.github/workflows/electronics.yml

@@ -14,13 +14,62 @@ jobs:
         uses: actions/checkout@v2
 
       - name: Set up outputs directory
-        run: mkdir -p electronics/build
+        run: mkdir -p electronics/build/outputs
+
+      - name: Install dependencies
+        run: ./electronics/scripts/dependencies.sh
+
+      - name: Export JLCPCB fabrication files [view_base]
+        run: |
+          ./electronics/scripts/export_jlcpcb.py electronics/view_base/view_base.kicad_pcb
+          cp -r electronics/build/view_base-jlc electronics/build/outputs
+
+      - name: Export PCB overview PDF [view_base]
+        run: |
+          ./electronics/scripts/generate_pdf.py electronics/view_base/view_base.kicad_pcb
+          cp electronics/build/view_base-pcb-packet.pdf electronics/build/outputs
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Render PCB 3D [view_base]
+        run: |
+          ./electronics/scripts/export_3d.py electronics/view_base/view_base.kicad_pcb --suffix front --width 1280 --height 1280 --skip-virtual --color-soldermask 0.95 0.95 0.95 --color-silk 0.1 0.1 0.1 transform z+ z+
+          cp electronics/build/view_base-front-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_base-front-3d.png
+          ./electronics/scripts/export_3d.py electronics/view_base/view_base.kicad_pcb --suffix back --width 1280 --height 1280 --skip-virtual --color-soldermask 0.95 0.95 0.95 --color-silk 0.1 0.1 0.1 transform z+ z+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+
+          cp electronics/build/view_base-back-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_base-back-3d.png
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Export JLCPCB fabrication files [view_screen]
+        run: |
+          ./electronics/scripts/export_jlcpcb.py electronics/view_screen/view_screen.kicad_pcb
+          cp -r electronics/build/view_screen-jlc electronics/build/outputs
+
+      - name: Export PCB overview PDF [view_screen]
+        run: |
+          ./electronics/scripts/generate_pdf.py electronics/view_screen/view_screen.kicad_pcb
+          cp electronics/build/view_screen-pcb-packet.pdf electronics/build/outputs
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Render PCB 3D [view_screen]
+        run: |
+          ./electronics/scripts/export_3d.py electronics/view_screen/view_screen.kicad_pcb --suffix front --width 1280 --height 1280 --skip-virtual --color-soldermask 0.95 0.95 0.95 --color-silk 0.1 0.1 0.1 transform z+ z+
+          cp electronics/build/view_screen-front-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_screen-front-3d.png
+          ./electronics/scripts/export_3d.py electronics/view_screen/view_screen.kicad_pcb --suffix back --width 1280 --height 1280 --skip-virtual --color-soldermask 0.95 0.95 0.95 --color-silk 0.1 0.1 0.1 transform z+ z+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+
+          cp electronics/build/view_screen-back-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_screen-back-3d.png
+        env:
+          PYTHONUNBUFFERED: 1
 
       - name: Export artifacts (KiBot) [view_base]
         uses: INTI-CMNB/KiBot@fb6d637c17fbba2daf005a9a7972e4c02c1c997c
         with:
           config: electronics/view_base/view_base.kibot.yml
-          dir: electronics/build
+          dir: electronics/build/outputs
           schema: 'electronics/view_base/view_base.sch'
           board: 'electronics/view_base/view_base.kicad_pcb'
 
@@ -28,7 +77,7 @@ jobs:
         uses: INTI-CMNB/KiBot@fb6d637c17fbba2daf005a9a7972e4c02c1c997c
         with:
           config: electronics/view_screen/view_screen.kibot.yml
-          dir: electronics/build
+          dir: electronics/build/outputs
           schema: 'electronics/view_screen/view_screen.sch'
           board: 'electronics/view_screen/view_screen.kicad_pcb'
 
@@ -51,5 +100,5 @@ jobs:
       - name: Sync artifacts to S3
         if: github.event_name == 'push' && github.repository_owner == 'scottbez1'
         run: |
-          aws s3 sync electronics/build s3://smartknob-artifacts/${GITHUB_REF#refs/heads/}/electronics --delete --cache-control max-age=0,no-cache
+          aws s3 sync electronics/build/outputs s3://smartknob-artifacts/${GITHUB_REF#refs/heads/}/electronics --delete --cache-control max-age=0,no-cache
 

+ 2 - 0
.gitignore

@@ -27,3 +27,5 @@ build/
 !.vscode/extensions.json
 !.vscode/*.code-snippets
 
+__pycache__
+

+ 15 - 8
README.md

@@ -13,11 +13,11 @@ Premium SmartKnob experience. Under active development. Untested & unproven.
 
 #### Base PCB
 
-<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-3D_top.png">
-    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-3D_top.png" width="300" />
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png" width="300" />
 </a>
-<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-3D_bottom.png">
-    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-3D_bottom.png" width="300" />
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png" width="300" />
 </a>
 
 
@@ -25,13 +25,17 @@ Premium SmartKnob experience. Under active development. Untested & unproven.
 
 [Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)
 
+[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-pcb-packet.pdf)
+
+[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-jlc/gerbers.zip)
+
 #### Screen PCB
 
-<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-3D_top.png">
-    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-3D_top.png" width="300" />
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png" width="300" />
 </a>
-<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-3D_bottom.png">
-    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-3D_bottom.png" width="300" />
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png" width="300" />
 </a>
 
 
@@ -39,6 +43,9 @@ Premium SmartKnob experience. Under active development. Untested & unproven.
 
 [Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)
 
+[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-pcb-packet.pdf)
+
+[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-jlc/gerbers.zip)
 
 ### SmartKnob Handheld
 An exploration of a small handheld form-factor. Under active development.

+ 0 - 0
__init__.py


+ 0 - 0
electronics/scripts/__init__.py


+ 87 - 0
electronics/scripts/config/eeschema

@@ -0,0 +1,87 @@
+SchematicFramePos_x=89
+SchematicFramePos_y=38
+SchematicFrameSize_x=1125
+SchematicFrameSize_y=739
+SchematicFrameMaximized=0
+SchematicFrameAutoSaveInterval=600
+SchematicFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=1016;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=212;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=688;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=181;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=36|dock_size(4,3,0)=36|dock_size(2,1,0)=36|dock_size(5,0,0)=337|dock_size(3,6,0)=34|
+SchematicFrameMostRecentlyUsedPath=
+SchematicFrameUnits=1
+SchematicFrameShowGrid=1
+SchematicFrame_LastGridSize=5
+SchematicFrameFirstRunShown=0
+SchematicFrameDevelMaxUndoItems=0
+SchematicFrameGalDisplayOptionsGridStyle=0
+SchematicFrameGalDisplayOptionsGridLineWidth=1
+SchematicFrameGalDisplayOptionsGridMaxDensity=10
+SchematicFrameGalDisplayOptionsGridAxesEnabled=0
+SchematicFrameGalDisplayOptionsCursorFullscreen=0
+SchematicFrameGalDisplayOptionsForceDisplayCursor=1
+ShowPageLimits=1
+Units=1
+PrintMonochrome=1
+PrintSheetReferenceAndTitleBlock=1
+RepeatStepX=0
+RepeatStepY=100
+RepeatLabelIncrement=1
+ShowIllegalSymbolLibDialog=1
+ShowSheetFileNameCaseSensitivityDlg=1
+DefaultBusWidth=12
+DefaultWireWidth=6
+DefaultJunctionSize=40
+ShowHiddenPins=0
+HorizVertLinesOnly=1
+AutoplaceFields=1
+AutoplaceJustify=1
+AutoplaceAlign=0
+FootprintPreview=0
+SimCmdLine=
+LastFindReplaceFlags=1
+LastFindString=
+LastReplaceString=
+FieldNames=(templatefields)
+canvas_type=2
+Color4DWireEx=rgb(0, 132, 0)
+Color4DBusEx=rgb(0, 0, 132)
+Color4DConnEx=rgb(0, 132, 0)
+Color4DLLabelEx=rgb(0, 0, 0)
+Color4DHLabelEx=rgb(132, 132, 0)
+Color4DGLabelEx=rgb(132, 0, 0)
+Color4DPinNumEx=rgb(132, 0, 0)
+Color4DPinNameEx=rgb(0, 132, 132)
+Color4DFieldEx=rgb(132, 0, 132)
+Color4DReferenceEx=rgb(0, 132, 132)
+Color4DValueEx=rgb(0, 132, 132)
+Color4DNoteEx=rgb(0, 0, 194)
+Color4DBodyEx=rgb(132, 0, 0)
+Color4DBodyBgEx=rgb(255, 255, 194)
+Color4DNetNameEx=rgb(132, 132, 132)
+Color4DPinEx=rgb(132, 0, 0)
+Color4DSheetEx=rgb(132, 0, 132)
+Color4DSheetFileNameEx=rgb(132, 132, 0)
+Color4DSheetNameEx=rgb(0, 132, 132)
+Color4DSheetLabelEx=rgb(132, 132, 0)
+Color4DNoConnectEx=rgb(0, 0, 132)
+Color4DErcWEx=rgba(0, 132, 0, 0.800)
+Color4DErcEEx=rgba(132, 0, 0, 0.800)
+Color4DGridEx=rgb(132, 132, 132)
+Color4DBgCanvasEx=rgb(255, 255, 255)
+Color4DCursorEx=rgb(0, 0, 0)
+Color4DBrightenedEx=rgb(255, 0, 255)
+Color4DHiddenEx=rgb(194, 194, 194)
+Color4DWorksheetEx=rgb(132, 0, 0)
+file1=
+file2=
+file3=
+file4=
+file5=
+file6=
+file7=
+file8=
+file9=
+PlotModeColor=1
+PlotFrameRef=1
+PlotFormat=3
+PlotHPGLOrg=0
+PlotHPGLPaperSize=0
+PlotHPGLPenSize=0.4826

+ 556 - 0
electronics/scripts/config/pcbnew

@@ -0,0 +1,556 @@
+Color4DPCBLayer_F.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In1.Cu=rgb(194, 194, 0)
+Color4DPCBLayer_In2.Cu=rgb(194, 0, 194)
+Color4DPCBLayer_In3.Cu=rgb(194, 0, 0)
+Color4DPCBLayer_In4.Cu=rgb(0, 132, 132)
+Color4DPCBLayer_In5.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In6.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In7.Cu=rgb(132, 132, 132)
+Color4DPCBLayer_In8.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In9.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In10.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In11.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In12.Cu=rgb(132, 132, 0)
+Color4DPCBLayer_In13.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In14.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In15.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In16.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In17.Cu=rgb(194, 194, 0)
+Color4DPCBLayer_In18.Cu=rgb(194, 0, 194)
+Color4DPCBLayer_In19.Cu=rgb(194, 0, 0)
+Color4DPCBLayer_In20.Cu=rgb(0, 132, 132)
+Color4DPCBLayer_In21.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In22.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In23.Cu=rgb(132, 132, 132)
+Color4DPCBLayer_In24.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In25.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In26.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In27.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In28.Cu=rgb(132, 132, 0)
+Color4DPCBLayer_In29.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In30.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_B.Cu=rgba(0, 132, 0, 0.439)
+Color4DPCBLayer_B.Adhes=rgb(0, 0, 132)
+Color4DPCBLayer_F.Adhes=rgb(132, 0, 132)
+Color4DPCBLayer_B.Paste=rgb(0, 194, 194)
+Color4DPCBLayer_F.Paste=rgb(132, 0, 0)
+Color4DPCBLayer_B.SilkS=rgb(132, 0, 132)
+Color4DPCBLayer_F.SilkS=rgb(0, 132, 132)
+Color4DPCBLayer_B.Mask=rgb(132, 132, 0)
+Color4DPCBLayer_F.Mask=rgb(132, 0, 132)
+Color4DPCBLayer_Dwgs.User=rgb(194, 194, 194)
+Color4DPCBLayer_Cmts.User=rgb(0, 0, 132)
+Color4DPCBLayer_Eco1.User=rgb(0, 132, 0)
+Color4DPCBLayer_Eco2.User=rgb(194, 194, 0)
+Color4DPCBLayer_Edge.Cuts=rgb(194, 194, 0)
+Color4DPCBLayer_Margin=rgb(194, 0, 194)
+Color4DPCBLayer_B.CrtYd=rgb(132, 132, 132)
+Color4DPCBLayer_F.CrtYd=rgb(194, 194, 194)
+Color4DPCBLayer_B.Fab=rgb(0, 0, 132)
+Color4DPCBLayer_F.Fab=rgb(132, 132, 132)
+Color4DTxtFrontEx=rgb(194, 194, 194)
+Color4DTxtBackEx=rgb(0, 0, 132)
+Color4DTxtInvisEx=rgb(132, 132, 132)
+Color4DPadBackEx=rgb(0, 132, 0)
+Color4DAnchorEx=rgb(0, 0, 132)
+Color4DPadFrontEx=rgb(132, 0, 0)
+Color4DPadThruHoleEx=rgb(194, 194, 0)
+Color4DNonPlatedEx=rgb(194, 194, 0)
+Color4DPCBBackground=rgb(0, 0, 0)
+Color4DPCBCursor=rgb(255, 255, 255)
+Color4DAuxItems=rgb(255, 255, 255)
+Color4DWorksheet=rgb(72, 0, 0)
+Color4DGrid=rgb(132, 132, 132)
+Color4DViaThruEx=rgb(194, 194, 194)
+Color4DViaBBlindEx=rgb(132, 132, 0)
+Color4DViaMicroEx=rgb(0, 132, 132)
+Color4DRatsEx=rgb(255, 255, 255)
+Color4DNoNetPadMarker=rgb(0, 0, 132)
+LegacyAutoDeleteOldTrack=1
+LegacyUse45DegreeTracks=1
+LegacyUseTwoSegmentTracks=1
+Use45DegreeGraphicSegments=0
+MagneticPads=2
+MagneticTracks=1
+EditActionChangesTrackWidth=0
+DragSelects=1
+PcbFramePos_x=72
+PcbFramePos_y=27
+PcbFrameSize_x=2488
+PcbFrameSize_y=1413
+PcbFrameMaximized=1
+PcbFrameAutoSaveInterval=600
+PcbFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=956;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=AuxToolbar;caption=;state=139644;dir=1;layer=4;row=0;pos=0;prop=100000;bestw=995;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=597;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MicrowaveToolbar;caption=;state=139598;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=187;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=2;row=0;pos=0;prop=100000;bestw=36;besth=708;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=LayersManager;caption=Layers Manager;state=1532;dir=2;layer=3;row=0;pos=0;prop=100000;bestw=198;besth=32;minw=198;minh=32;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=198;floath=32|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=181;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1112;besth=731;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(1,4,0)=38|dock_size(3,6,0)=34|dock_size(4,3,0)=36|dock_size(2,2,0)=36|dock_size(2,3,0)=198|dock_size(5,0,0)=389|
+PcbFrameMostRecentlyUsedPath=
+PcbFrameShowGrid=1
+PcbFrameGridColor=rgb(132, 132, 132)
+PcbFrame_LastGridSize=2
+PcbFrameFirstRunShown=1
+PcbFrameDevelMaxUndoItems=0
+PcbFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+PcbFrameGalDisplayOptionsGridStyle=0
+PcbFrameGalDisplayOptionsGridLineWidth=1
+PcbFrameGalDisplayOptionsGridMaxDensity=10
+PcbFrameGalDisplayOptionsGridAxesEnabled=0
+PcbFrameGalDisplayOptionsCursorFullscreen=0
+PcbFrameGalDisplayOptionsForceDisplayCursor=0
+PcbFramePcbUserGrid_X=0.254
+PcbFramePcbUserGrid_Y=0.254
+PcbFramePcbUserGrid_Unit=1
+PcbFrameDiPadFi=1
+PcbFrameDiViaFi=1
+PcbFrameDiPadNu=1
+PcbFrameDiModEd=1
+PcbFrameDiModTx=1
+PcbFrameFastGrid1=0
+PcbFrameFastGrid2=0
+Units=1
+DisplayPolarCoords=0
+ShowNetNamesMode=3
+DisplayTrackFilled=1
+TrackDisplayClearance=2
+PadFill=1
+ViaFill=1
+PadAffG=1
+PadSNum=1
+ModAffC=1
+ModAffT=1
+PcbAffT=1
+PcbShowZonesMode=0
+RotationAngle=900
+MaxLnkS=3
+PlotLineWidth_mm=0.1
+ShowMicrowaveTools=0
+ShowLayerManagerTools=1
+ShowPageLimits=0
+canvas_type=1
+pcbnew.InteractiveRouter.Mode=1
+pcbnew.InteractiveRouter.OptimizerEffort=1
+pcbnew.InteractiveRouter.RemoveLoops=1
+pcbnew.InteractiveRouter.SmartPads=1
+pcbnew.InteractiveRouter.ShoveVias=1
+pcbnew.InteractiveRouter.StartDiagonal=0
+pcbnew.InteractiveRouter.ShoveTimeLimit=1000
+pcbnew.InteractiveRouter.ShoveIterationLimit=250
+pcbnew.InteractiveRouter.WalkaroundIterationLimit=50
+pcbnew.InteractiveRouter.JumpOverObstacles=0
+pcbnew.InteractiveRouter.SmoothDraggedSegments=1
+pcbnew.InteractiveRouter.CanViolateDRC=0
+pcbnew.InteractiveRouter.SuggestFinish=0
+pcbnew.InteractiveRouter.FreeAngleMode=0
+pcbnew.InteractiveRouter.InlineDragEnabled=0
+MousewheelPAN=0
+ZoomNoCenter=0
+AutoPAN=1
+file1=
+file2=
+file3=
+file4=
+file5=
+file6=
+file7=
+file8=
+file9=
+PcbFrameCursorShape=0
+PcbFrameMaxUndoItems=0
+ViaHoleDisplayMode=1
+ColorPCBLayer_F.Cu=Red 2
+ColorPCBLayer_In1.Cu=Yellow 3
+ColorPCBLayer_In2.Cu=Magenta 3
+ColorPCBLayer_In3.Cu=Red 3
+ColorPCBLayer_In4.Cu=Cyan 2
+ColorPCBLayer_In5.Cu=Green 2
+ColorPCBLayer_In6.Cu=Blue 2
+ColorPCBLayer_In7.Cu=Gray 2
+ColorPCBLayer_In8.Cu=Magenta 2
+ColorPCBLayer_In9.Cu=Gray 3
+ColorPCBLayer_In10.Cu=Magenta 2
+ColorPCBLayer_In11.Cu=Red 2
+ColorPCBLayer_In12.Cu=Brown 2
+ColorPCBLayer_In13.Cu=Gray 3
+ColorPCBLayer_In14.Cu=Blue 2
+ColorPCBLayer_In15.Cu=Green 2
+ColorPCBLayer_In16.Cu=Red 2
+ColorPCBLayer_In17.Cu=Yellow 3
+ColorPCBLayer_In18.Cu=Magenta 3
+ColorPCBLayer_In19.Cu=Red 3
+ColorPCBLayer_In20.Cu=Cyan 2
+ColorPCBLayer_In21.Cu=Green 2
+ColorPCBLayer_In22.Cu=Blue 2
+ColorPCBLayer_In23.Cu=Gray 2
+ColorPCBLayer_In24.Cu=Magenta 2
+ColorPCBLayer_In25.Cu=Gray 3
+ColorPCBLayer_In26.Cu=Magenta 2
+ColorPCBLayer_In27.Cu=Red 2
+ColorPCBLayer_In28.Cu=Brown 2
+ColorPCBLayer_In29.Cu=Gray 3
+ColorPCBLayer_In30.Cu=Blue 2
+ColorPCBLayer_B.Cu=Green 2
+ColorPCBLayer_B.Adhes=Blue 2
+ColorPCBLayer_F.Adhes=Magenta 2
+ColorPCBLayer_B.Paste=Cyan 3
+ColorPCBLayer_F.Paste=Red 2
+ColorPCBLayer_B.SilkS=Magenta 2
+ColorPCBLayer_F.SilkS=Cyan 2
+ColorPCBLayer_B.Mask=Brown 2
+ColorPCBLayer_F.Mask=Magenta 2
+ColorPCBLayer_Dwgs.User=Gray 3
+ColorPCBLayer_Cmts.User=Blue 2
+ColorPCBLayer_Eco1.User=Green 2
+ColorPCBLayer_Eco2.User=Yellow 3
+ColorPCBLayer_Edge.Cuts=Yellow 3
+ColorPCBLayer_Margin=Magenta 3
+ColorPCBLayer_B.CrtYd=Yellow 3
+ColorPCBLayer_F.CrtYd=Gray 2
+ColorPCBLayer_B.Fab=Red 2
+ColorPCBLayer_F.Fab=Yellow 3
+ColorTxtFrontEx=Gray 3
+ColorTxtBackEx=Blue 2
+ColorTxtInvisEx=Gray 2
+ColorAnchorEx=Blue 2
+ColorPadBackEx=Green 2
+ColorPadFrontEx=Red 2
+ColorViaThruEx=Gray 3
+ColorViaBBlindEx=Brown 2
+ColorViaMicroEx=Cyan 2
+ColorNonPlatedEx=Yellow 3
+ColorRatsEx=White
+ShowMRa=1
+TwoSegT=1
+SegmPcb45Only=1
+PcbMagPadOpt=1
+PcbMagTrackOpt=1
+MiddleButtonPAN=1
+MiddleBtnPANLimited=0
+FootprintWizardPos_x=384
+FootprintWizardPos_y=514
+FootprintWizardSize_x=2272
+FootprintWizardSize_y=1000
+FootprintWizardMaximized=0
+FootprintWizardPerspective=layout2|name=m_mainToolBar;caption=;state=139632;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=393;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_parametersPanel;caption=;state=508;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=360;minh=180;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_buildMessageBox;caption=;state=508;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=104;besth=73;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=256;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=382;besth=63;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131388;dir=3;layer=1;row=0;pos=0;prop=100000;bestw=400;besth=68;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,10,0)=36|dock_size(4,0,0)=513|dock_size(5,0,0)=300|dock_size(3,1,0)=68|
+FootprintWizardMostRecentlyUsedPath=
+FootprintWizardShowGrid=1
+FootprintWizardGridColor=rgb(132, 132, 132)
+FootprintWizard_LastGridSize=0
+FootprintWizardFirstRunShown=0
+FootprintWizardDevelMaxUndoItems=0
+FootprintWizardGalDisplayOptionsOpenGLAntialiasingMode=0
+FootprintWizardGalDisplayOptionsGridStyle=0
+FootprintWizardGalDisplayOptionsGridLineWidth=0.5
+FootprintWizardGalDisplayOptionsGridMaxDensity=10
+FootprintWizardGalDisplayOptionsGridAxesEnabled=0
+FootprintWizardGalDisplayOptionsCursorFullscreen=0
+FootprintWizardGalDisplayOptionsForceDisplayCursor=0
+Fpwizard_auiPerspective=layout2|name=m_mainToolBar;caption=;state=139632;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=393;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_parametersPanel;caption=;state=508;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=360;minh=180;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_buildMessageBox;caption=;state=508;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=104;besth=73;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=256;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=382;besth=63;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131388;dir=3;layer=1;row=0;pos=0;prop=100000;bestw=400;besth=68;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,10,0)=36|dock_size(4,0,0)=513|dock_size(5,0,0)=300|dock_size(3,1,0)=68|
+ModEditColor4DPCBLayer_F.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In1.Cu=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_In2.Cu=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_In3.Cu=rgb(194, 0, 0)
+ModEditColor4DPCBLayer_In4.Cu=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_In5.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In6.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In7.Cu=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_In8.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In9.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In10.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In11.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In12.Cu=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_In13.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In14.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In15.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In16.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In17.Cu=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_In18.Cu=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_In19.Cu=rgb(194, 0, 0)
+ModEditColor4DPCBLayer_In20.Cu=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_In21.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In22.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In23.Cu=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_In24.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In25.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In26.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In27.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In28.Cu=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_In29.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In30.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_B.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_B.Adhes=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_F.Adhes=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_B.Paste=rgb(0, 194, 194)
+ModEditColor4DPCBLayer_F.Paste=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_B.SilkS=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_F.SilkS=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_B.Mask=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_F.Mask=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_Dwgs.User=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_Cmts.User=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_Eco1.User=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_Eco2.User=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_Edge.Cuts=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_Margin=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_B.CrtYd=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_F.CrtYd=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_B.Fab=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_F.Fab=rgb(132, 132, 132)
+ModEditColor4DTxtFrontEx=rgb(194, 194, 194)
+ModEditColor4DTxtBackEx=rgb(0, 0, 132)
+ModEditColor4DTxtInvisEx=rgb(132, 132, 132)
+ModEditColor4DPadBackEx=rgb(0, 132, 0)
+ModEditColor4DAnchorEx=rgb(0, 0, 132)
+ModEditColor4DPadFrontEx=rgb(132, 0, 0)
+ModEditColor4DPadThruHoleEx=rgb(194, 194, 0)
+ModEditColor4DNonPlatedEx=rgb(194, 194, 0)
+ModEditColor4DPCBBackground=rgb(0, 0, 0)
+ModEditColor4DPCBCursor=rgb(255, 255, 255)
+ModEditColor4DAuxItems=rgb(255, 255, 255)
+ModEditColor4DWorksheet=rgb(72, 0, 0)
+ModEditColor4DGrid=rgb(132, 132, 132)
+ModEditFramePos_x=72
+ModEditFramePos_y=27
+ModEditFrameSize_x=1848
+ModEditFrameSize_y=1053
+ModEditFrameMaximized=1
+ModEditFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=982;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=366;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Footprints;caption=Libraries;state=2044;dir=4;layer=1;row=0;pos=0;prop=100000;bestw=552;besth=-1;minw=250;minh=400;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=418;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=LayersManager;caption=Layers Manager;state=1532;dir=2;layer=3;row=0;pos=0;prop=100000;bestw=188;besth=32;minw=188;minh=32;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=188;floath=32|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=144;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1112;besth=731;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(3,6,0)=34|dock_size(4,3,0)=36|dock_size(4,1,0)=554|dock_size(2,1,0)=36|dock_size(2,3,0)=188|dock_size(5,0,0)=554|
+ModEditFrameMostRecentlyUsedPath=
+ModEditFrameShowGrid=1
+ModEditFrameGridColor=rgb(132, 132, 132)
+ModEditFrame_LastGridSize=16
+ModEditFrameFirstRunShown=0
+ModEditFrameDevelMaxUndoItems=0
+ModEditFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+ModEditFrameGalDisplayOptionsGridStyle=0
+ModEditFrameGalDisplayOptionsGridLineWidth=0.5
+ModEditFrameGalDisplayOptionsGridMaxDensity=10
+ModEditFrameGalDisplayOptionsGridAxesEnabled=1
+ModEditFrameGalDisplayOptionsCursorFullscreen=0
+ModEditFrameGalDisplayOptionsForceDisplayCursor=0
+ModEditFramePcbUserGrid_X=0.254
+ModEditFramePcbUserGrid_Y=0.254
+ModEditFramePcbUserGrid_Unit=1
+ModEditFrameDiPadFi=1
+ModEditFrameDiViaFi=1
+ModEditFrameDiPadNu=1
+ModEditFrameDiModEd=1
+ModEditFrameDiModTx=1
+ModEditFrameFastGrid1=0
+ModEditFrameFastGrid2=0
+FpEditorUnits=1
+FpEditorDisplayPolarCoords=0
+FpEditorPadDisplayMode=1
+FpEditorGraphicLinesDisplayMode=1
+FpEditorTextsDisplayMode=1
+FpEditorTextsRefDefaultText=REF**
+FpEditorGrlineWidth=0.15
+FpEditorTextsDefaultSizeH=1
+FpEditorTextsDefaultSizeV=1
+FpEditorTextsDefaultThickness=0.15
+FpEditorRefDefaultText=REF**
+FpEditorRefDefaultVisibility=1
+FpEditorRefDefaultLayer=37
+FpEditorValueDefaultText=
+FpEditorValueDefaultVisibility=1
+FpEditorValueDefaultLayer=49
+ModViewFramePos_x=72
+ModViewFramePos_y=27
+ModViewFrameSize_x=2488
+ModViewFrameSize_y=1413
+ModViewFrameMaximized=1
+ModViewFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=779;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Libraries;caption=;state=1020;dir=4;layer=2;row=0;pos=0;prop=100000;bestw=200;besth=-1;minw=100;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Footprints;caption=;state=1020;dir=4;layer=1;row=0;pos=0;prop=100000;bestw=300;besth=-1;minw=100;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=144;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1835;besth=1040;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(3,6,0)=34|dock_size(4,2,0)=202|dock_size(4,1,0)=302|dock_size(5,0,0)=389|
+ModViewFrameMostRecentlyUsedPath=
+ModViewFrameShowGrid=1
+ModViewFrameGridColor=rgb(132, 132, 132)
+ModViewFrame_LastGridSize=1
+ModViewFrameFirstRunShown=0
+ModViewFrameDevelMaxUndoItems=0
+ModViewFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+ModViewFrameGalDisplayOptionsGridStyle=0
+ModViewFrameGalDisplayOptionsGridLineWidth=0.5
+ModViewFrameGalDisplayOptionsGridMaxDensity=10
+ModViewFrameGalDisplayOptionsGridAxesEnabled=1
+ModViewFrameGalDisplayOptionsCursorFullscreen=0
+ModViewFrameGalDisplayOptionsForceDisplayCursor=0
+import_last_path=
+FpWizardListWidth=588
+FpWizardListHeight=482
+Viewer3DFrameNamePos_x=72
+Viewer3DFrameNamePos_y=27
+Viewer3DFrameNameSize_x=2488
+Viewer3DFrameNameSize_y=1413
+Viewer3DFrameNameMaximized=1
+Viewer3DFrameNamePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=735;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=36|dock_size(5,0,0)=22|
+Viewer3DFrameNameMostRecentlyUsedPath=
+BgColor_Red=0.4
+BgColor_Green=0.4
+BgColor_Blue=0.5
+BgColor_Red_Top=0.8
+BgColor_Green_Top=0.8
+BgColor_Blue_Top=0.9
+SMaskColor_Red=0.0784314
+SMaskColor_Green=0.2
+SMaskColor_Blue=0.141176
+SPasteColor_Red=0.501961
+SPasteColor_Green=0.501961
+SPasteColor_Blue=0.501961
+SilkColor_Red=0.9
+SilkColor_Green=0.9
+SilkColor_Blue=0.9
+CopperColor_Red=0.7
+CopperColor_Green=0.612157
+CopperColor_Blue=0
+BoardBodyColor_Red=0.2
+BoardBodyColor_Green=0.168627
+BoardBodyColor_Blue=0.0862745
+ShowRealisticMode=1
+MousewheelPAN3D=0
+RenderEngine=0
+Render_Material=0
+Render_OGL_ShowCopperThickness=1
+Render_OGL_ShowModelBoudingBoxes=0
+Render_RAY_Shadows=1
+Render_RAY_Backfloor=1
+Render_RAY_Refractions=1
+Render_RAY_Reflections=1
+Render_RAY_PostProcess=1
+Render_RAY_AntiAliasing=1
+Render_RAY_ProceduralTextures=1
+ShowAxis=1
+ShowGrid3D=0
+ShowFootprints_Normal=1
+ShowFootprints_Insert=1
+ShowFootprints_Virtual=1
+ShowZones=1
+ShowAdhesiveLayers=1
+ShowSilkScreenLayers=1
+ShowSolderMasLayers=1
+ShowSolderPasteLayers=1
+ShowCommentsLayers=1
+ShowEcoLayers=1
+ShowBoardBody=1
+SilentMode=0
+NetlistDeleteSinglePadNets=1
+NetlistReportFilterMsg=15
+TestMissingCourtyard=0
+TestFootprintCourtyard=0
+RefillZonesBeforeDrc=0
+Zone_Ouline_Hatch_Opt=2
+Zone_Filter_Opt=Net-*
+Zone_Clearance=20
+Zone_Thickness=10
+Zone_TH_Gap=20
+Zone_TH_Copper_Width=39.37007874015748
+PcbIconScale=-1
+PrintModuleScale=3
+PrintMonochrome=1
+ModEditColor4DPCBLayer_Rescue=rgb(132, 0, 0)
+ActionPluginButtons=
+ModEditFrameUnits=1
+FpEditorSilkLineWidth=0.15
+FpEditorSilkTextSizeH=1
+FpEditorSilkTextSizeV=1
+FpEditorSilkTextThickness=0.15
+FpEditorSilkTextItalic=0
+FpEditorCopperLineWidth=0.12
+FpEditorCopperTextSizeV=1.5
+FpEditorCopperTextSizeH=1.5
+FpEditorCopperTextThickness=0.3
+FpEditorCopperTextItalic=0
+FpEditorEdgeCutLineWidth=0.12
+FpEditorCourtyardLineWidth=0.12
+FpEditorOthersLineWidth=0.12
+FpEditorOthersTextSizeV=1
+FpEditorOthersTextSizeH=1
+FpEditorOthersTextSizeThickness=0.15
+FpEditorOthersTextItalic=0
+ModeditLibWidth=552
+NetlistUpdateFootprints=1
+NetlistDeleteShortingTracks=0
+NetlistDeleteExtraFootprints=1
+FootprintTextShownColumns=0 1 2 3 4 5 6
+DrcTrackToZoneTest=0
+ModViewFrameUnits=1
+ModViewFrameModalPcbUserGrid_X=0.254
+ModViewFrameModalPcbUserGrid_Y=0.254
+ModViewFrameModalPcbUserGrid_Unit=1
+ModViewFrameModalDiPadFi=1
+ModViewFrameModalDiViaFi=1
+ModViewFrameModalDiPadNu=1
+ModViewFrameModalDiModEd=1
+ModViewFrameModalDiModTx=1
+ModViewFrameModalFastGrid1=0
+ModViewFrameModalFastGrid2=0
+ModViewFrameAutoZoom=1
+ModViewFrameZoom=17.1134
+Color4DPCBLayer_Rescue=rgb(132, 0, 0)
+MagneticGraphics=1
+PcbFrameUnits=1
+PrintScale=1
+PrintPageFrame=1
+PlotLayer_0=1
+PlotLayer_1=0
+PlotLayer_2=0
+PlotLayer_3=0
+PlotLayer_4=0
+PlotLayer_5=0
+PlotLayer_6=0
+PlotLayer_7=0
+PlotLayer_8=0
+PlotLayer_9=0
+PlotLayer_10=0
+PlotLayer_11=0
+PlotLayer_12=0
+PlotLayer_13=0
+PlotLayer_14=0
+PlotLayer_15=0
+PlotLayer_16=0
+PlotLayer_17=0
+PlotLayer_18=0
+PlotLayer_19=0
+PlotLayer_20=0
+PlotLayer_21=0
+PlotLayer_22=0
+PlotLayer_23=0
+PlotLayer_24=0
+PlotLayer_25=0
+PlotLayer_26=0
+PlotLayer_27=0
+PlotLayer_28=0
+PlotLayer_29=0
+PlotLayer_30=0
+PlotLayer_31=1
+PlotLayer_32=0
+PlotLayer_33=0
+PlotLayer_34=1
+PlotLayer_35=1
+PlotLayer_36=1
+PlotLayer_37=1
+PlotLayer_38=1
+PlotLayer_39=1
+PlotLayer_40=0
+PlotLayer_41=0
+PlotLayer_42=0
+PlotLayer_43=0
+PlotLayer_44=1
+PlotLayer_45=0
+PlotLayer_46=0
+PlotLayer_47=0
+PlotLayer_48=0
+PlotLayer_49=0
+PlotLayer_50=0
+PrintPadsDrillOpt=2
+PrintSinglePage=0
+PlotXFineScaleAdj=1
+PlotYFineScaleAdj=1
+CheckZonesBeforePlotting=1
+PSPlotFineWidthAdj=0
+DrillZerosFormat=0
+DrillMirrorYOpt=0
+DrillMergePTHNPTH=0
+DrillMinHeader=0
+DrillUnit=1
+DrillMapFileType=1
+DrillFileType=0
+OvalHolesRouteMode=1
+PlaceFileUnits=1
+PlaceFileOpts=0
+PlaceFileFormat=1
+LibFootprintTextShownColumns=0 1 2 3 4 5 6

+ 96 - 0
electronics/scripts/config/policy.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policymap [
+  <!ELEMENT policymap (policy)+>
+  <!ATTLIST policymap xmlns CDATA #FIXED ''>
+  <!ELEMENT policy EMPTY>
+  <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
+    name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
+    stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
+]>
+<!--
+  Configure ImageMagick policies.
+
+  Domains include system, delegate, coder, filter, path, or resource.
+
+  Rights include none, read, write, execute and all.  Use | to combine them,
+  for example: "read | write" to permit read from, or write to, a path.
+
+  Use a glob expression as a pattern.
+
+  Suppose we do not want users to process MPEG video images:
+
+    <policy domain="delegate" rights="none" pattern="mpeg:decode" />
+
+  Here we do not want users reading images from HTTP:
+
+    <policy domain="coder" rights="none" pattern="HTTP" />
+
+  The /repository file system is restricted to read only.  We use a glob
+  expression to match all paths that start with /repository:
+
+    <policy domain="path" rights="read" pattern="/repository/*" />
+
+  Lets prevent users from executing any image filters:
+
+    <policy domain="filter" rights="none" pattern="*" />
+
+  Any large image is cached to disk rather than memory:
+
+    <policy domain="resource" name="area" value="1GP"/>
+
+  Define arguments for the memory, map, area, width, height and disk resources
+  with SI prefixes (.e.g 100MB).  In addition, resource policies are maximums
+  for each instance of ImageMagick (e.g. policy memory limit 1GB, -limit 2GB
+  exceeds policy maximum so memory limit is 1GB).
+
+  Rules are processed in order.  Here we want to restrict ImageMagick to only
+  read or write a small subset of proven web-safe image types:
+
+    <policy domain="delegate" rights="none" pattern="*" />
+    <policy domain="filter" rights="none" pattern="*" />
+    <policy domain="coder" rights="none" pattern="*" />
+    <policy domain="coder" rights="read|write" pattern="{GIF,JPEG,PNG,WEBP}" />
+-->
+<policymap>
+  <!-- <policy domain="system" name="shred" value="2"/> -->
+  <!-- <policy domain="system" name="precision" value="6"/> -->
+  <!-- <policy domain="system" name="memory-map" value="anonymous"/> -->
+  <!-- <policy domain="system" name="max-memory-request" value="256MiB"/> -->
+  <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> -->
+  <policy domain="resource" name="memory" value="256MiB"/>
+  <policy domain="resource" name="map" value="512MiB"/>
+  <policy domain="resource" name="width" value="16KP"/>
+  <policy domain="resource" name="height" value="16KP"/>
+  <!-- <policy domain="resource" name="list-length" value="128"/> -->
+  <policy domain="resource" name="area" value="128MB"/>
+  <policy domain="resource" name="disk" value="1GiB"/>
+  <!-- <policy domain="resource" name="file" value="768"/> -->
+  <!-- <policy domain="resource" name="thread" value="4"/> -->
+  <!-- <policy domain="resource" name="throttle" value="0"/> -->
+  <!-- <policy domain="resource" name="time" value="3600"/> -->
+  <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
+  <!-- <policy domain="module" rights="none" pattern="{PS,PDF,XPS}" /> -->
+  <!-- <policy domain="delegate" rights="none" pattern="HTTPS" /> -->
+  <!-- <policy domain="path" rights="none" pattern="@*" /> -->
+  <!-- <policy domain="cache" name="memory-map" value="anonymous"/> -->
+  <!-- <policy domain="cache" name="synchronize" value="True"/> -->
+  <!-- <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> -->
+  <!-- <policy domain="system" name="pixel-cache-memory" value="anonymous"/> -->
+  <!-- <policy domain="system" name="shred" value="2"/> -->
+  <!-- <policy domain="system" name="precision" value="6"/> -->
+  <!-- not needed due to the need to use explicitly by mvg: -->
+  <!-- <policy domain="delegate" rights="none" pattern="MVG" /> -->
+  <!-- use curl -->
+  <policy domain="delegate" rights="none" pattern="URL" />
+  <policy domain="delegate" rights="none" pattern="HTTPS" />
+  <policy domain="delegate" rights="none" pattern="HTTP" />
+  <!-- in order to avoid to get image with password text -->
+  <policy domain="path" rights="none" pattern="@*"/>
+  <!-- disable ghostscript format types -->
+  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="none" pattern="PS2" />
+  <policy domain="coder" rights="none" pattern="PS3" />
+  <policy domain="coder" rights="none" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="none" pattern="XPS" />
+</policymap>

+ 28 - 0
electronics/scripts/dependencies.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+set -e
+
+if [[ -z "${GITHUB_WORKFLOW}" ]]; then
+    >&2 echo "Aborting! This script is meant to be run in CI (Github Actions) only. It may modify/damage your system configuration if run outside of CI."
+    exit 1
+fi
+
+set -v
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+sudo add-apt-repository --yes ppa:kicad/kicad-5.1-releases
+sudo apt-get update -qq
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y kicad inkscape poppler-utils xdotool recordmydesktop python3-dev python3-pip
+
+# KiKit is installed via pinned git revision to get "new" CLI with support for V-Cuts layer specification. TODO: switch to release version once landed.
+sudo python3 -m pip install psutil kikit==1.0.2 xvfbwrapper
+
+mkdir -p ~/.config/kicad
+cp /usr/share/kicad/template/fp-lib-table ~/.config/kicad/
+cp /usr/share/kicad/template/sym-lib-table ~/.config/kicad/
+
+cp "$DIR/config/eeschema" ~/.config/kicad/
+cp "$DIR/config/pcbnew" ~/.config/kicad/
+
+# Install ImageMagick policy that allows PDF conversion (safe in CI because we control all inputs/outputs)
+sudo cp "$DIR/config/policy.xml" /etc/ImageMagick-6/policy.xml

+ 192 - 0
electronics/scripts/export_3d.py

@@ -0,0 +1,192 @@
+#!/usr/bin/env python3
+
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   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.
+
+import argparse
+import logging
+import os
+import psutil
+import sys
+import time
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from util import file_util
+from export_util import (
+    patch_config,
+    PopenContext,
+    versioned_file,
+    xdotool,
+    wait_for_window,
+    recorded_xvfb,
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+RENDER_TIMEOUT = 10 * 60
+
+
+def _wait_for_pcbnew_idle():
+    start = time.time()
+    while time.time() < start + RENDER_TIMEOUT:
+        for proc in psutil.process_iter():
+            if proc.name() == 'pcbnew':
+                cpu = proc.cpu_percent(interval=1)
+                print(f'CPU={cpu}', flush=True)
+                if cpu < 5:
+                    print('Render took %d seconds' % (time.time() - start))
+                    return
+        time.sleep(1)
+    raise RuntimeError('Timeout waiting for pcbnew to go idle')
+
+
+def _zoom_in():
+    xdotool([
+        'click',
+        '4',
+    ])
+    time.sleep(0.2)
+
+
+def _invoke_view_option(index):
+    command = ['key', 'alt+v'] + ['Down']*index + ['Return']
+    xdotool(command)
+    time.sleep(2)
+
+
+_transforms = {
+    'z+': ('Zoom in', _zoom_in),
+    'rx+': ('Rotate X Clockwise', lambda: _invoke_view_option(4)),
+    'rx-': ('Rotate X Counterclockwise', lambda: _invoke_view_option(5)),
+    'ry+': ('Rotate Y Clockwise', lambda: _invoke_view_option(6)),
+    'ry-': ('Rotate Y Counterclockwise', lambda: _invoke_view_option(7)),
+    'rz+': ('Rotate Z Clockwise', lambda: _invoke_view_option(8)),
+    'rz-': ('Rotate Z Counterclockwise', lambda: _invoke_view_option(9)),
+    'ml': ('Move left', lambda: _invoke_view_option(10)),
+    'mr': ('Move right', lambda: _invoke_view_option(11)),
+    'mu': ('Move up', lambda: _invoke_view_option(12)),
+    'md': ('Move down', lambda: _invoke_view_option(13)),
+}
+
+
+def _pcbnew_export_3d(output_file, width, height, transforms):
+    if os.path.exists(output_file):
+        os.remove(output_file)
+
+    wait_for_window('pcbnew', 'Pcbnew ', additional_commands=['windowfocus'])
+
+    time.sleep(1)
+
+    logger.info('Open 3d viewer')
+    xdotool(['key', 'alt+3'])
+
+    wait_for_window('3D Viewer', '3D Viewer', additional_commands=['windowfocus'])
+
+    time.sleep(3)
+
+    # Maximize window
+    xdotool(['search', '--name', '3D Viewer', 'windowmove', '0', '0'])
+    xdotool(['search', '--name', '3D Viewer', 'windowsize', str(width), str(height)])
+
+    time.sleep(3)
+
+    for transform in transforms:
+        description, func = _transforms[transform]
+        logger.info(description)
+        func()
+
+    logger.info('Wait for rendering...')
+
+    _wait_for_pcbnew_idle()
+
+    time.sleep(5)
+
+    logger.info('Export current view')
+    xdotool([
+        'key',
+        'alt+f',
+        'Return',
+    ])
+
+    logger.info('Enter build output filename')
+    xdotool([
+        'key',
+        'ctrl+a',
+    ])
+    xdotool(['type', output_file])
+
+    logger.info('Save')
+    xdotool(['key', 'Return'])
+
+    logger.info('Wait before shutdown')
+    time.sleep(2)
+
+
+def export_3d(filename, suffix, width, height, transforms, raytrace, virtual, color_soldermask, color_silk):
+    pcb_file = os.path.abspath(filename)
+    output_dir = os.path.join(electronics_root, 'build')
+    file_util.mkdir_p(output_dir)
+
+    screencast_output_file = os.path.join(output_dir, 'export_3d_screencast.ogv')
+
+    name, _ = os.path.splitext(os.path.basename(pcb_file))
+    if suffix:
+        name = name + '-' + suffix
+    output_file = os.path.join(output_dir, f'{name}-3d.png')
+
+    settings = {
+        'canvas_type': '1',
+        'SMaskColor_Red': str(color_soldermask[0]),
+        'SMaskColor_Green': str(color_soldermask[1]),
+        'SMaskColor_Blue': str(color_soldermask[2]),
+        'SilkColor_Red': str(color_silk[0]),
+        'SilkColor_Green': str(color_silk[1]),
+        'SilkColor_Blue': str(color_silk[2]),
+        'RenderEngine': '1' if raytrace else '0',
+        'ShowFootprints_Virtual': '1' if virtual else '0',
+        'Render_RAY_ProceduralTextures': '0',
+    }
+    with patch_config(os.path.expanduser('~/.config/kicad/pcbnew'), settings):
+        with versioned_file(pcb_file):
+            with recorded_xvfb(screencast_output_file, width=width, height=height, colordepth=24):
+                with PopenContext(['pcbnew', pcb_file], close_fds=True) as pcbnew_proc:
+                    _pcbnew_export_3d(output_file, width, height, transforms)
+                    pcbnew_proc.terminate()
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument('pcb')
+    parser.add_argument('--suffix', default='')
+    parser.add_argument('--width', type=int, default=2560)
+    parser.add_argument('--height', type=int, default=1440)
+    parser.add_argument('--skip-raytrace', action='store_true')
+    parser.add_argument('--skip-virtual', action='store_true', help='Don\'t render virtual footprints')
+    parser.add_argument('--color-soldermask', type=float, nargs=3, help='Soldermask color as 3 floats from 0-1', default=[0.1, 0.1, 0.1])
+    parser.add_argument('--color-silk', type=float, nargs=3, help='Silkscreen color as 3 floats from 0-1', default=[0.9, 0.9, 0.9])
+
+    # Use subparsers to for an optional nargs="*" choices argument (workaround for https://bugs.python.org/issue9625)
+    subparsers = parser.add_subparsers(dest='which')
+    transform_parser = subparsers.add_parser('transform', help='Apply one or more transforms before capturing image')
+    transform_parser.add_argument('transform', nargs='+', choices=list(_transforms.keys()))
+
+    args = parser.parse_args()
+
+    transforms = args.transform if args.which == 'transform' else []
+
+    export_3d(args.pcb, args.suffix, args.width, args.height, transforms, not args.skip_raytrace, not args.skip_virtual, args.color_soldermask, args.color_silk)

+ 70 - 0
electronics/scripts/export_jlcpcb.py

@@ -0,0 +1,70 @@
+#!/usr/bin/env python3
+
+#   Copyright 2021 Scott Bezek and the splitflap contributors
+#
+#   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.
+
+import argparse
+import logging
+import os
+import subprocess
+import sys
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from util import file_util
+from export_util import (
+    versioned_file,
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+def export_jlcpcb(pcb, schematic, alt_fields):
+    pcb_file = os.path.abspath(pcb)
+
+    output_dir = os.path.join(electronics_root, 'build', os.path.splitext(os.path.basename(pcb_file))[0] + '-jlc')
+    file_util.mkdir_p(output_dir)
+
+    with versioned_file(pcb_file):
+        command = [
+            'kikit',
+            'fab',
+            'jlcpcb',
+        ]
+        if schematic is not None:
+            schematic_file = os.path.abspath(schematic)
+            command += [
+                '--assembly',
+                '--schematic',
+                schematic_file,
+                '--field',
+            ]
+            command.append(','.join(alt_fields + ['LCSC']))
+        command += [
+            pcb_file,
+            output_dir,
+        ]
+        subprocess.check_call(command)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument('pcb')
+    parser.add_argument('--assembly-schematic')
+    parser.add_argument('--alt-fields', nargs='+')
+    args = parser.parse_args()
+    export_jlcpcb(args.pcb, args.assembly_schematic, args.alt_fields)

+ 138 - 0
electronics/scripts/export_util.py

@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+
+#   Copyright 2015-2016 Scott Bezek and the splitflap contributors
+#
+#   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.
+
+import logging
+import os
+import re
+import subprocess
+import sys
+import tempfile
+import time
+
+from contextlib import contextmanager
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from xvfbwrapper import Xvfb
+from util import file_util, rev_info
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+class PopenContext(subprocess.Popen):
+    def __enter__(self):
+        return self
+    def __exit__(self, type, value, traceback):
+        if self.stdout:
+            self.stdout.close()
+        if self.stderr:
+            self.stderr.close()
+        if self.stdin:
+            self.stdin.close()
+        if type:
+            self.terminate()
+        # Wait for the process to terminate, to avoid zombies.
+        self.wait()
+
+def xdotool(command):
+    return subprocess.check_output(['xdotool'] + command)
+
+def wait_for_window(name, window_regex, additional_commands=None, timeout=10):
+    if additional_commands is not None:
+        commands = additional_commands
+    else:
+        commands = []
+
+    DELAY = 0.5
+    logger.info('Waiting for %s window...', name)
+    for i in range(int(timeout/DELAY)):
+        try:
+            xdotool(['search', '--name', window_regex] + commands)
+            logger.info('Found %s window', name)
+            return
+        except subprocess.CalledProcessError:
+            pass
+        time.sleep(DELAY)
+    raise RuntimeError('Timed out waiting for %s window' % name)
+
+@contextmanager
+def recorded_xvfb(video_filename, **xvfb_args):
+    with Xvfb(**xvfb_args):
+        with PopenContext([
+                'recordmydesktop',
+                '--no-sound',
+                '--no-frame',
+                '--on-the-fly-encoding',
+                '-o', video_filename], close_fds=True) as screencast_proc: 
+            yield
+            screencast_proc.terminate()
+
+
+def get_versioned_contents(filename):
+    with open(filename, 'r') as f:
+        original_contents = f.read()
+        date = rev_info.git_date()
+        date_long = rev_info.git_date(short=False)
+        rev = rev_info.git_short_rev()
+        logger.info('Replacing placeholders with %s and %s' % (date, rev))
+        return original_contents, original_contents \
+            .replace('Date ""', 'Date "%s"' % date_long) \
+            .replace('DATE: YYYY-MM-DD TIME TZ', 'DATE: %s' % date_long) \
+            .replace('DATE: YYYY-MM-DD', 'DATE: %s' % date) \
+            .replace('Rev ""', 'Rev "%s"' % rev) \
+            .replace('COMMIT: deadbeef', 'COMMIT: %s' % rev)
+
+
+@contextmanager
+def versioned_file(filename):
+    original_contents, versioned_contents = get_versioned_contents(filename)
+    with open(filename, 'w') as temp_schematic:
+        logger.debug('Writing to %s', filename)
+        temp_schematic.write(versioned_contents)
+    try:
+        yield
+    finally:
+        with open(filename, 'w') as temp_schematic:
+            logger.debug('Restoring %s', filename)
+            temp_schematic.write(original_contents)
+
+
+@contextmanager
+def patch_config(filename, replacements):
+    if not os.path.exists(filename):
+        yield
+        return
+
+    with open(filename, 'r') as f:
+        original_contents = f.read()
+
+    new_contents = original_contents
+    for (key, value) in replacements.items():
+        pattern = '^' + re.escape(key) + '=(.*)$'
+        new_contents = re.sub(pattern, key + '=' + value, new_contents, flags=re.MULTILINE)
+
+    with open(filename, 'w') as f:
+        logger.debug('Writing to %s', filename)
+        f.write(new_contents)
+    try:
+        yield
+    finally:
+        with open(filename, 'w') as f:
+            logger.debug('Restoring %s', filename)
+            f.write(original_contents)
+

+ 80 - 0
electronics/scripts/generate_pdf.py

@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   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.
+import argparse
+import logging
+import os
+import pcbnew
+import shutil
+import subprocess
+
+from collections import namedtuple
+
+import pcb_util
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+def run(pcb_file):
+    output_directory = os.path.join(electronics_root, 'build')
+    temp_dir = os.path.join(output_directory, 'temp_pdfs')
+    shutil.rmtree(temp_dir, ignore_errors=True)
+    try:
+        os.makedirs(temp_dir)
+        plot_to_directory(pcb_file, output_directory, temp_dir)
+    finally:
+        shutil.rmtree(temp_dir, ignore_errors=True)
+
+
+def plot_to_directory(pcb_file, output_directory, temp_dir):
+    board_name = os.path.splitext(os.path.basename(pcb_file))[0]
+
+    with pcb_util.get_plotter(pcb_file, temp_dir) as plotter:
+        plotter.plot_options.SetDrillMarksType(pcbnew.PCB_PLOT_PARAMS.NO_DRILL_SHAPE)
+        plotter.plot_options.SetExcludeEdgeLayer(False)
+
+        LayerDef = namedtuple('LayerDef', ['layer', 'mirror'])
+        layers = [
+            LayerDef(pcbnew.F_Cu, False),
+            LayerDef(pcbnew.B_Cu, True),
+            LayerDef(pcbnew.F_SilkS, False),
+            LayerDef(pcbnew.B_SilkS, True),
+            LayerDef(pcbnew.F_Mask, False),
+            LayerDef(pcbnew.B_Mask, True),
+            LayerDef(pcbnew.F_Paste, False),
+        ]
+
+        pdfs = []
+        for layer in layers:
+            plotter.plot_options.SetMirror(layer.mirror)
+            output_filename = plotter.plot(layer.layer, pcbnew.PLOT_FORMAT_PDF)
+            pdfs.append(output_filename)
+
+        _, map_file = plotter.plot_drill()
+        pdfs.append(map_file)
+
+        output_pdf_filename = os.path.join(output_directory, '%s-pcb-packet.pdf' % (board_name,))
+
+        command = ['pdfunite'] + pdfs + [output_pdf_filename]
+        subprocess.check_call(command)
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser('Generate a pdf of the PCB')
+    parser.add_argument('pcb_file')
+    args = parser.parse_args()
+    run(args.pcb_file)
+

+ 112 - 0
electronics/scripts/pcb_util.py

@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   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.
+
+import argparse
+import logging
+import os
+import pcbnew
+import tempfile
+
+from contextlib import contextmanager
+
+from export_util import (
+    get_versioned_contents
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+@contextmanager
+def versioned_board(filename):
+    _, versioned_contents = get_versioned_contents(filename)
+    with tempfile.NamedTemporaryFile(suffix='.kicad_pcb', mode='w') as temp_pcb:
+        logger.debug('Writing to %s', temp_pcb.name)
+        temp_pcb.write(versioned_contents)
+        temp_pcb.flush()
+
+        logger.debug('Load board')
+        board = pcbnew.LoadBoard(temp_pcb.name)
+        yield board
+
+@contextmanager
+def get_plotter(pcb_filename, build_directory):
+    with versioned_board(pcb_filename) as board:
+        yield Plotter(board, build_directory)
+
+
+class Plotter(object):
+    def __init__(self, board, build_directory):
+        self.board = board
+        self.build_directory = build_directory
+        self.plot_controller = pcbnew.PLOT_CONTROLLER(board)
+        self.plot_options = self.plot_controller.GetPlotOptions()
+        self.plot_options.SetOutputDirectory(build_directory)
+
+        self.plot_options.SetPlotFrameRef(False)
+        self.plot_options.SetLineWidth(pcbnew.FromMM(0.35))
+        self.plot_options.SetScale(1)
+        self.plot_options.SetUseAuxOrigin(True)
+        self.plot_options.SetMirror(False)
+        self.plot_options.SetExcludeEdgeLayer(True)
+
+    def plot(self, layer, plot_format):
+        layer_name = self.board.GetLayerName(layer)
+        logger.info('Plotting layer %s (kicad layer=%r)', layer_name, layer)
+        self.plot_controller.SetLayer(layer)
+        self.plot_controller.OpenPlotfile(layer_name, plot_format , 'Plot')
+        output_filename = self.plot_controller.GetPlotFileName()
+        self.plot_controller.PlotLayer()
+        self.plot_controller.ClosePlot()
+        return output_filename
+
+    def plot_drill(self):
+        board_name = os.path.splitext(os.path.basename(self.board.GetFileName()))[0]
+        logger.info('Plotting drill file')
+        drill_writer = pcbnew.EXCELLON_WRITER(self.board)
+        drill_writer.SetMapFileFormat(pcbnew.PLOT_FORMAT_PDF)
+
+        mirror = False
+        minimalHeader = False
+        offset = pcbnew.wxPoint(0, 0)
+        merge_npth = True
+        drill_writer.SetOptions(mirror, minimalHeader, offset, merge_npth)
+
+        metric_format = True
+        drill_writer.SetFormat(metric_format)
+
+        generate_drill = True
+        generate_map = True
+        drill_writer.CreateDrillandMapFilesSet(self.build_directory, generate_drill, generate_map)
+
+        drill_file_name = os.path.join(
+            self.build_directory,
+            '%s.drl' % (board_name,)
+        )
+
+        map_file_name = os.path.join(
+            self.build_directory,
+            '%s-drl_map.pdf' % (board_name,)
+        )
+        return drill_file_name, map_file_name
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Test pcb util')
+    parser.add_argument('input_file', help='Input .kicad_pcb file')
+    args = parser.parse_args()
+    with versioned_board(args.input_file) as board:
+        logger.info('Loaded %s', board.GetFileName())
+        for module in board.GetModules():
+            logger.info('Module %s: %s', module.GetReference(), module.GetValue())

+ 46 - 20
electronics/view_base/view_base.kibot.yml

@@ -8,6 +8,32 @@ preflight:
   update_xml: true
 
 outputs:
+  # - name: pdf
+  #   type: pdf_pcb_print
+  #   dir: pdf
+  #   options:
+  #     separated: true
+  #   layers:
+  #     - 'F.Cu'
+  #     - 'B.Cu'
+  #     - 'F.Paste'
+  #     - 'B.Paste'
+  #     - 'F.SilkS'
+  #     - 'B.SilkS'
+  #     - 'Edge.Cuts'
+
+  # - name: gerber
+  #   type: gerber
+  #   dir: gerber
+  #   layers:
+  #     - 'F.Cu'
+  #     - 'B.Cu'
+  #     - 'F.Paste'
+  #     - 'B.Paste'
+  #     - 'F.SilkS'
+  #     - 'B.SilkS'
+  #     - 'Edge.Cuts'
+
   - name: ibom
     comment: 'Interactive BOM'
     type: ibom
@@ -19,24 +45,24 @@ outputs:
   - name: schematic
     type: pdf_sch_print
 
-  - name: 3d
-    type: render_3d
-    options:
-      no_virtual: true
-      view: 'top'
-      silk: '#111111'
-      solder_mask: '#ffffff'
-      board: '#C3BA9B'
-      copper: '#99967F'
-      zoom: 4
-      orthographic: true
-      ray_tracing: true
-      height: 1920
-      width: 1920
+  # - name: 3d
+  #   type: render_3d
+  #   options:
+  #     no_virtual: true
+  #     view: 'top'
+  #     silk: '#111111'
+  #     solder_mask: '#ffffff'
+  #     board: '#C3BA9B'
+  #     copper: '#99967F'
+  #     zoom: 4
+  #     orthographic: true
+  #     ray_tracing: true
+  #     height: 1920
+  #     width: 1920
 
-  - name: 3d_back
-    type: render_3d
-    extends: 3d
-    options:
-      view: 'bottom'
-      zoom: 3
+  # - name: 3d_back
+  #   type: render_3d
+  #   extends: 3d
+  #   options:
+  #     view: 'bottom'
+  #     zoom: 3

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 292 - 292
electronics/view_base/view_base.kicad_pcb


+ 20 - 20
electronics/view_screen/view_screen.kibot.yml

@@ -19,24 +19,24 @@ outputs:
   - name: schematic
     type: pdf_sch_print
 
-  - name: 3d
-    type: render_3d
-    options:
-      no_virtual: true
-      view: 'top'
-      silk: '#111111'
-      solder_mask: '#ffffff'
-      board: '#C3BA9B'
-      copper: '#99967F'
-      orthographic: true
-      ray_tracing: true
-      height: 1920
-      width: 1920
-      zoom: 3
+  # - name: 3d
+  #   type: render_3d
+  #   options:
+  #     no_virtual: true
+  #     view: 'top'
+  #     silk: '#111111'
+  #     solder_mask: '#ffffff'
+  #     board: '#C3BA9B'
+  #     copper: '#99967F'
+  #     orthographic: true
+  #     ray_tracing: true
+  #     height: 1920
+  #     width: 1920
+  #     zoom: 4
 
-  - name: 3d_back
-    type: render_3d
-    extends: 3d
-    options:
-      view: 'bottom'
-      zoom: 3
+  # - name: 3d_back
+  #   type: render_3d
+  #   extends: 3d
+  #   options:
+  #     view: 'bottom'
+  #     zoom: 3

+ 505 - 496
electronics/view_screen/view_screen.kicad_pcb

@@ -2,7 +2,7 @@
 
   (general
     (thickness 1.2)
-    (drawings 50)
+    (drawings 53)
     (tracks 81)
     (zones 0)
     (modules 10)
@@ -83,11 +83,11 @@
       (plotinvisibletext false)
       (padsonsilk false)
       (subtractmaskfromsilk false)
-      (outputformat 1)
+      (outputformat 4)
       (mirror false)
-      (drillshape 1)
+      (drillshape 0)
       (scaleselection 1)
-      (outputdirectory ""))
+      (outputdirectory "../build/"))
   )
 
   (net 0 "")
@@ -124,7 +124,7 @@
   )
 
   (module LCD_GC9A01:GC9A01Round1.28 (layer B.Cu) (tedit 6208A85C) (tstamp 6207D05B)
-    (at 0 10.9 90)
+    (at 100 110.9 90)
     (path /620756C7)
     (attr virtual)
     (fp_text reference J2 (at 4 -1 90) (layer B.SilkS) hide
@@ -177,7 +177,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D0AD)
-    (at 12.5 7.5)
+    (at 112.5 107.5)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /620807F6)
@@ -213,7 +213,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D09C)
-    (at 4.5 7.5 270)
+    (at 104.5 107.5 270)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /6209F498)
@@ -249,7 +249,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D08B)
-    (at 12.5 6 180)
+    (at 112.5 106 180)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /6208164C)
@@ -285,7 +285,7 @@
   )
 
   (module Package_TO_SOT_SMD:SOT-23 (layer B.Cu) (tedit 5A02FF57) (tstamp 6207D07A)
-    (at 10 10.5 180)
+    (at 110 110.5 180)
     (descr "SOT-23, Standard")
     (tags SOT-23)
     (path /6207DB9F)
@@ -326,7 +326,7 @@
   )
 
   (module SolderPads:SolderPads_2mm_4 (layer F.Cu) (tedit 62075369) (tstamp 6207D74B)
-    (at -2.5 -9.5 90)
+    (at 97.5 90.5 90)
     (path /62076D99)
     (fp_text reference J3 (at 0 0.5 90) (layer F.SilkS) hide
       (effects (font (size 1 1) (thickness 0.15)))
@@ -347,7 +347,7 @@
   )
 
   (module SolderPads:SolderPads_2mm_4 (layer F.Cu) (tedit 62075369) (tstamp 6207D043)
-    (at 2.5 -9.5 90)
+    (at 102.5 90.5 90)
     (path /6207690B)
     (fp_text reference J1 (at 0 0.5 90) (layer F.SilkS) hide
       (effects (font (size 1 1) (thickness 0.15)))
@@ -368,7 +368,7 @@
   )
 
   (module Holes:AlignmentHole_1.6 locked (layer F.Cu) (tedit 620752D6) (tstamp 6207D039)
-    (at -6 0)
+    (at 94 100)
     (descr "Mounting Hole 2.2mm, no annular, M2, ISO7380")
     (tags "mounting hole 2.2mm no annular m2 iso7380")
     (path /62075165)
@@ -386,7 +386,7 @@
   )
 
   (module Capacitor_SMD:C_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D496)
-    (at 6 7 270)
+    (at 106 107 270)
     (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags capacitor)
     (path /620AE2F6)
@@ -422,7 +422,7 @@
   )
 
   (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D4C6)
-    (at 8 7 270)
+    (at 108 107 270)
     (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
     (tags capacitor)
     (path /6208DA53)
@@ -457,537 +457,546 @@
     )
   )
 
-  (gr_line (start 1 13.5) (end 1 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 0 -16.6) (end 0 -8.4) (layer F.SilkS) (width 0.12))
-  (gr_text S (at -0.6 -9.5) (layer F.SilkS)
+  (gr_arc (start 100 100) (end 100 93) (angle -270) (layer B.SilkS) (width 0.12))
+  (gr_text " DATE: YYYY-MM-DD\nCOMMIT: deadbeef" (at 116.5 96.5) (layer B.SilkS) (tstamp 620BB164)
+    (effects (font (size 0.9 0.9) (thickness 0.1)) (justify left mirror))
+  )
+  (gr_text "Screen PCB v0.1" (at 115 92.5) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.1)) (justify left mirror))
+  )
+  (gr_text "SmartKnob View" (at 113.5 90.5) (layer B.SilkS)
+    (effects (font (size 1.4 1.4) (thickness 0.27)) (justify left mirror))
+  )
+  (gr_line (start 101 113.5) (end 101 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 100 83.4) (end 100 91.6) (layer F.SilkS) (width 0.12))
+  (gr_text S (at 99.4 90.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text C (at -0.6 -11.5) (layer F.SilkS)
+  (gr_text C (at 99.4 88.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text - (at 0.6 -9.5) (layer F.SilkS)
+  (gr_text - (at 100.6 90.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text + (at 0.6 -11.5) (layer F.SilkS)
+  (gr_text + (at 100.6 88.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text B (at 0.6 -13.5) (layer F.SilkS)
+  (gr_text B (at 100.6 86.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text D (at -0.6 -13.5) (layer F.SilkS)
+  (gr_text D (at 99.4 86.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text M (at 0.6 -15.5) (layer F.SilkS)
+  (gr_text M (at 100.6 84.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text R (at -0.6 -15.5) (layer F.SilkS)
+  (gr_text R (at 99.4 84.5) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text "0.6mm thick" (at -13 4.5 -90) (layer F.SilkS) (tstamp 6208F7F2)
+  (gr_text "0.6mm thick" (at 87 104.5 -90) (layer F.SilkS) (tstamp 6208F7F2)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text "0.6mm thick" (at 9.5 4.5 -90) (layer F.SilkS)
+  (gr_text "0.6mm thick" (at 109.5 104.5 -90) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_line (start -2 12.5) (end -2 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 12.5) (end -2 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -9.5) (end -5.5 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -1.5 13) (end -1.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6 13) (end -1.5 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6 -11.5) (end -6 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -11.5) (end -6 -11.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -1 13.5) (end -1 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6.5 13.5) (end -1 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6.5 -13.5) (end -6.5 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -13.5) (end -6.5 -13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -0.5 14) (end -0.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -7 14) (end -0.5 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start -7 -15.5) (end -7 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -15.5) (end -7 -15.5) (layer F.SilkS) (width 0.12))
-  (gr_text "service loops" (at 0 15) (layer F.SilkS) (tstamp 6208F6F4)
+  (gr_line (start 98 112.5) (end 98 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 112.5) (end 98 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 90.5) (end 94.5 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 98.5 113) (end 98.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94 113) (end 98.5 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94 88.5) (end 94 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 88.5) (end 94 88.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 99 113.5) (end 99 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93.5 113.5) (end 99 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93.5 86.5) (end 93.5 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 86.5) (end 93.5 86.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 99.5 114) (end 99.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93 114) (end 99.5 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93 84.5) (end 93 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 84.5) (end 93 84.5) (layer F.SilkS) (width 0.12))
+  (gr_text "service loops" (at 100 115) (layer F.SilkS) (tstamp 6208F6F4)
     (effects (font (size 1 1) (thickness 0.15) italic))
   )
-  (gr_line (start 2 12.5) (end 2 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 12.5) (end 2 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -9.5) (end 5.5 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 4.5 -9.5) (end 5.5 -9.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 1.5 13) (end 1.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6 13) (end 1.5 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6 -11.5) (end 6 13) (layer F.SilkS) (width 0.12) (tstamp 6208F6BF))
-  (gr_line (start 5.5 -11.5) (end 6 -11.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6.5 13.5) (end 1 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6.5 -13.5) (end 6.5 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -13.5) (end 6.5 -13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 0.5 14) (end 0.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 7 14) (end 0.5 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start 7 -15.5) (end 7 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -15.5) (end 7 -15.5) (layer F.SilkS) (width 0.12))
-  (gr_text "VHB 5925" (at -10.5 0 270) (layer F.SilkS) (tstamp 6208F695)
+  (gr_line (start 102 112.5) (end 102 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 112.5) (end 102 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 90.5) (end 105.5 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 104.5 90.5) (end 105.5 90.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 101.5 113) (end 101.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106 113) (end 101.5 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106 88.5) (end 106 113) (layer F.SilkS) (width 0.12) (tstamp 6208F6BF))
+  (gr_line (start 105.5 88.5) (end 106 88.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106.5 113.5) (end 101 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106.5 86.5) (end 106.5 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 86.5) (end 106.5 86.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 100.5 114) (end 100.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 107 114) (end 100.5 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 107 84.5) (end 107 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 84.5) (end 107 84.5) (layer F.SilkS) (width 0.12))
+  (gr_text "VHB 5925" (at 89.5 100 270) (layer F.SilkS) (tstamp 6208F695)
     (effects (font (size 2.5 2.5) (thickness 0.3)))
   )
-  (gr_text "VHB 5925" (at 12 0 -90) (layer F.SilkS)
+  (gr_text "VHB 5925" (at 112 100 -90) (layer F.SilkS)
     (effects (font (size 2.5 2.5) (thickness 0.3)))
   )
-  (gr_line (start -8 -15) (end -8 15) (layer F.SilkS) (width 0.3))
-  (gr_line (start 8 -15) (end 8 15) (layer F.SilkS) (width 0.3))
-  (gr_circle (center 0 0) (end 7 0) (layer B.SilkS) (width 0.12))
-  (gr_circle (center 0 0) (end 17.5 0) (layer Edge.Cuts) (width 0.2))
-  (gr_circle (center 0 0) (end 4.05 0) (layer Edge.Cuts) (width 0.2))
+  (gr_line (start 92 85) (end 92 115) (layer F.SilkS) (width 0.3))
+  (gr_line (start 108 85) (end 108 115) (layer F.SilkS) (width 0.3))
+  (gr_circle (center 100 100) (end 117.5 100) (layer Edge.Cuts) (width 0.2))
+  (gr_circle (center 100 100) (end 104.05 100) (layer Edge.Cuts) (width 0.2))
 
-  (via (at -9 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -11 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -13 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -5.75 5.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -7 6.75) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1) (tstamp 620905D8))
-  (via (at -8.25 8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 16.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 15 0) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -15 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 7.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 7.75 9) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 -7.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 4.5 -11.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2))
-  (segment (start 2.5 -11.5) (end 4.5 -11.5) (width 0.4) (layer F.Cu) (net 2))
-  (segment (start 4.5 -11.5) (end 4.5 -9) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 4.5 -9) (end 9.5 -4) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 9.5 4.55) (end 8 6.05) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 9.5 -4) (end 9.5 4.55) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 6.175 6.05) (end 6 6.225) (width 0.25) (layer B.Cu) (net 2))
-  (segment (start 8 6.05) (end 6.175 6.05) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 4.775 6.225) (end 1.75 9.25) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 6 6.225) (end 4.775 6.225) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 1.75 9.25) (end 1.75 10.6) (width 0.4) (layer B.Cu) (net 2))
-  (via (at 4.5 -15.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3))
-  (segment (start 2.5 -15.5) (end 4.5 -15.5) (width 0.25) (layer F.Cu) (net 3))
-  (segment (start 7.5 1.5) (end -0.35 9.35) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 7.5 -3) (end 7.5 1.5) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 3 -7.5) (end 7.5 -3) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 3 -14) (end 3 -7.5) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 4.5 -15.5) (end 3 -14) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start -0.35 9.35) (end -0.35 10.6) (width 0.25) (layer B.Cu) (net 3))
-  (via (at 4.5 -13.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 4))
-  (segment (start 2.5 -13.5) (end 4.5 -13.5) (width 0.25) (layer F.Cu) (net 4))
-  (segment (start 4.5 -13.5) (end 11.5 -6.5) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 11.5 -6.5) (end 11.5 2.5) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 11.5 2.5) (end 13 4) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 13 5.675) (end 13.325 6) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 13 4) (end 13 5.675) (width 0.25) (layer B.Cu) (net 4))
-  (via (at -4.5 -15.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5))
-  (segment (start -2.5 -15.5) (end -4.5 -15.5) (width 0.25) (layer F.Cu) (net 5))
-  (segment (start -3.15 9.35) (end -3.15 10.6) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -3.5 9) (end -3.15 9.35) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -8.5 9) (end -3.5 9) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -14 -7) (end -14 3.5) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -14 3.5) (end -8.5 9) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -5.5 -15.5) (end -14 -7) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -4.5 -15.5) (end -5.5 -15.5) (width 0.25) (layer B.Cu) (net 5))
-  (via (at -4.5 -13.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 6))
-  (segment (start -2.5 -13.5) (end -4.5 -13.5) (width 0.25) (layer F.Cu) (net 6))
-  (segment (start -12 3) (end -6.450009 8.549991) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -6.450009 8.549991) (end -3.313599 8.549991) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -12 -6) (end -12 3) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -3.313599 8.549991) (end -2.45 9.413589) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -4.5 -13.5) (end -12 -6) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -2.45 9.413589) (end -2.45 10.6) (width 0.25) (layer B.Cu) (net 6))
-  (via (at -4.5 -11.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 7))
-  (segment (start -4.5 -11.5) (end -2.5 -11.5) (width 0.25) (layer F.Cu) (net 7))
-  (segment (start -10 -6) (end -4.5 -11.5) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -10 2.5) (end -10 -6) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -4.5 8) (end -10 2.5) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -3 8) (end -4.5 8) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -1.75 9.25) (end -3 8) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -1.75 9.25) (end -1.75 10.6) (width 0.25) (layer B.Cu) (net 7))
-  (via (at -4.5 -9.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 8))
-  (segment (start -4.5 -9.5) (end -2.5 -9.5) (width 0.25) (layer F.Cu) (net 8))
-  (segment (start -4.5 -9) (end -4.5 -9.5) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -8 -5.5) (end -4.5 -9) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -1.05 8.95) (end -8 2) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -8 2) (end -8 -5.5) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -1.05 8.95) (end -1.05 10.6) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start 3.725 8.325) (end 4.5 8.325) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 2.45 9.6) (end 3.725 8.325) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 2.45 10.6) (end 2.45 9.6) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 3.47501 9.27499) (end 4.77499 9.27499) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 3.15 9.6) (end 3.47501 9.27499) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 3.15 10.6) (end 3.15 9.6) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 6 10.5) (end 9 10.5) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 4.77499 9.27499) (end 6 10.5) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 11 8.175) (end 11.675 7.5) (width 0.25) (layer B.Cu) (net 11))
-  (segment (start 11 9.55) (end 11 8.175) (width 0.25) (layer B.Cu) (net 11))
-  (segment (start 11.675 6) (end 11.675 7.5) (width 0.25) (layer B.Cu) (net 11))
+  (via (at 91 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 89 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 87 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 94.25 105.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 93 106.75) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1) (tstamp 620905D8))
+  (via (at 91.75 108) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 100 116.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 115 100) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 85 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 100 107.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 107.75 109) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 100 92.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 104.5 88.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2))
+  (segment (start 102.5 88.5) (end 104.5 88.5) (width 0.4) (layer F.Cu) (net 2))
+  (segment (start 104.5 88.5) (end 104.5 91) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 104.5 91) (end 109.5 96) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 109.5 104.55) (end 108 106.05) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 109.5 96) (end 109.5 104.55) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 106.175 106.05) (end 106 106.225) (width 0.25) (layer B.Cu) (net 2))
+  (segment (start 108 106.05) (end 106.175 106.05) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 104.775 106.225) (end 101.75 109.25) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 106 106.225) (end 104.775 106.225) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 101.75 109.25) (end 101.75 110.6) (width 0.4) (layer B.Cu) (net 2))
+  (via (at 104.5 84.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3))
+  (segment (start 102.5 84.5) (end 104.5 84.5) (width 0.25) (layer F.Cu) (net 3))
+  (segment (start 107.5 101.5) (end 99.65 109.35) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 107.5 97) (end 107.5 101.5) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 103 92.5) (end 107.5 97) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 103 86) (end 103 92.5) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 104.5 84.5) (end 103 86) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 99.65 109.35) (end 99.65 110.6) (width 0.25) (layer B.Cu) (net 3))
+  (via (at 104.5 86.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 4))
+  (segment (start 102.5 86.5) (end 104.5 86.5) (width 0.25) (layer F.Cu) (net 4))
+  (segment (start 104.5 86.5) (end 111.5 93.5) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 111.5 93.5) (end 111.5 102.5) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 111.5 102.5) (end 113 104) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 113 105.675) (end 113.325 106) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 113 104) (end 113 105.675) (width 0.25) (layer B.Cu) (net 4))
+  (via (at 95.5 84.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5))
+  (segment (start 97.5 84.5) (end 95.5 84.5) (width 0.25) (layer F.Cu) (net 5))
+  (segment (start 96.85 109.35) (end 96.85 110.6) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 96.5 109) (end 96.85 109.35) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 91.5 109) (end 96.5 109) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 86 93) (end 86 103.5) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 86 103.5) (end 91.5 109) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 94.5 84.5) (end 86 93) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 95.5 84.5) (end 94.5 84.5) (width 0.25) (layer B.Cu) (net 5))
+  (via (at 95.5 86.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 6))
+  (segment (start 97.5 86.5) (end 95.5 86.5) (width 0.25) (layer F.Cu) (net 6))
+  (segment (start 88 103) (end 93.549991 108.549991) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 93.549991 108.549991) (end 96.686401 108.549991) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 88 94) (end 88 103) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 96.686401 108.549991) (end 97.55 109.413589) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 95.5 86.5) (end 88 94) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 97.55 109.413589) (end 97.55 110.6) (width 0.25) (layer B.Cu) (net 6))
+  (via (at 95.5 88.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 7))
+  (segment (start 95.5 88.5) (end 97.5 88.5) (width 0.25) (layer F.Cu) (net 7))
+  (segment (start 90 94) (end 95.5 88.5) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 90 102.5) (end 90 94) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 95.5 108) (end 90 102.5) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 97 108) (end 95.5 108) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 98.25 109.25) (end 97 108) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 98.25 109.25) (end 98.25 110.6) (width 0.25) (layer B.Cu) (net 7))
+  (via (at 95.5 90.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 8))
+  (segment (start 95.5 90.5) (end 97.5 90.5) (width 0.25) (layer F.Cu) (net 8))
+  (segment (start 95.5 91) (end 95.5 90.5) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 92 94.5) (end 95.5 91) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 98.95 108.95) (end 92 102) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 92 102) (end 92 94.5) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 98.95 108.95) (end 98.95 110.6) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 103.725 108.325) (end 104.5 108.325) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 102.45 109.6) (end 103.725 108.325) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 102.45 110.6) (end 102.45 109.6) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 103.47501 109.27499) (end 104.77499 109.27499) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 103.15 109.6) (end 103.47501 109.27499) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 103.15 110.6) (end 103.15 109.6) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 106 110.5) (end 109 110.5) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 104.77499 109.27499) (end 106 110.5) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 111 108.175) (end 111.675 107.5) (width 0.25) (layer B.Cu) (net 11))
+  (segment (start 111 109.55) (end 111 108.175) (width 0.25) (layer B.Cu) (net 11))
+  (segment (start 111.675 106) (end 111.675 107.5) (width 0.25) (layer B.Cu) (net 11))
 
-  (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 0) (hatch edge 0.508)
+  (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 620B8ECB) (hatch edge 0.508)
     (connect_pads (clearance 0.254))
     (min_thickness 0.254)
     (fill yes (arc_segments 32) (thermal_gap 0.254) (thermal_bridge_width 0.508))
     (polygon
       (pts
-        (xy 20 20) (xy -20 20) (xy -20 -20) (xy 20 -20)
+        (xy 120 120) (xy 80 120) (xy 80 80) (xy 120 80)
       )
     )
     (filled_polygon
       (pts
-        (xy 1.617759 -16.941937) (xy 3.220867 -16.711444) (xy 4.794806 -16.329611) (xy 6.325323 -15.799894) (xy 7.798557 -15.127091)
-        (xy 9.201166 -14.317294) (xy 10.520448 -13.377838) (xy 11.744455 -12.31723) (xy 12.862102 -11.145075) (xy 13.863268 -9.871989)
-        (xy 14.738886 -8.5095) (xy 15.481027 -7.069948) (xy 16.082969 -5.56637) (xy 16.539261 -4.012381) (xy 16.845771 -2.422056)
-        (xy 16.999723 -0.809797) (xy 16.999723 0.809797) (xy 16.845771 2.422056) (xy 16.539261 4.012381) (xy 16.082969 5.56637)
-        (xy 15.481027 7.069948) (xy 14.738886 8.5095) (xy 13.863268 9.871989) (xy 12.862102 11.145075) (xy 11.744455 12.31723)
-        (xy 10.520448 13.377838) (xy 9.201166 14.317294) (xy 7.798557 15.127091) (xy 6.325323 15.799894) (xy 4.794806 16.329611)
-        (xy 3.220867 16.711444) (xy 1.617759 16.941937) (xy 0 17.019) (xy -1.617759 16.941937) (xy -3.220867 16.711444)
-        (xy -4.794806 16.329611) (xy -6.325323 15.799894) (xy -7.798557 15.127091) (xy -9.201166 14.317294) (xy -10.520448 13.377838)
-        (xy -11.744455 12.31723) (xy -12.142282 11.9) (xy -4.407843 11.9) (xy -4.400487 11.974689) (xy -4.378701 12.046508)
-        (xy -4.343322 12.112696) (xy -4.295711 12.170711) (xy -4.237696 12.218322) (xy -4.171508 12.253701) (xy -4.099689 12.275487)
-        (xy -4.025 12.282843) (xy -3.99325 12.281) (xy -3.898 12.18575) (xy -3.898 11.027) (xy -4.31075 11.027)
-        (xy -4.406 11.12225) (xy -4.407843 11.9) (xy -12.142282 11.9) (xy -12.862102 11.145075) (xy -13.841239 9.9)
-        (xy -4.407843 9.9) (xy -4.406 10.67775) (xy -4.31075 10.773) (xy -3.898 10.773) (xy -3.898 9.61425)
-        (xy -3.99325 9.519) (xy -4.025 9.517157) (xy -4.099689 9.524513) (xy -4.171508 9.546299) (xy -4.237696 9.581678)
-        (xy -4.295711 9.629289) (xy -4.343322 9.687304) (xy -4.378701 9.753492) (xy -4.400487 9.825311) (xy -4.407843 9.9)
-        (xy -13.841239 9.9) (xy -13.863268 9.871989) (xy -14.738886 8.5095) (xy -15.481027 7.069948) (xy -16.082969 5.56637)
-        (xy -16.539261 4.012381) (xy -16.845771 2.422056) (xy -16.999723 0.809797) (xy -16.999723 -0.809797) (xy -16.845771 -2.422056)
-        (xy -16.539261 -4.012381) (xy -16.082969 -5.56637) (xy -15.50903 -7) (xy -14.508447 -7) (xy -14.506 -6.975154)
-        (xy -14.505999 3.475144) (xy -14.508447 3.5) (xy -14.498678 3.599192) (xy -14.469745 3.694574) (xy -14.469744 3.694575)
-        (xy -14.422758 3.782479) (xy -14.359526 3.859527) (xy -14.340219 3.875372) (xy -8.875372 9.34022) (xy -8.859527 9.359527)
-        (xy -8.782479 9.422759) (xy -8.694914 9.469564) (xy -8.694575 9.469745) (xy -8.599193 9.498678) (xy -8.5 9.508448)
-        (xy -8.475146 9.506) (xy -3.709591 9.506) (xy -3.697149 9.518443) (xy -3.70675 9.519) (xy -3.802 9.61425)
-        (xy -3.802 10.773) (xy -3.707843 10.773) (xy -3.707843 11.027) (xy -3.802 11.027) (xy -3.802 12.18575)
-        (xy -3.70675 12.281) (xy -3.675 12.282843) (xy -3.600311 12.275487) (xy -3.528492 12.253701) (xy -3.466762 12.220705)
-        (xy -3.417492 12.24704) (xy -3.329259 12.273805) (xy -3.2375 12.282843) (xy -3.0625 12.282843) (xy -2.970741 12.273805)
-        (xy -2.882508 12.24704) (xy -2.801191 12.203576) (xy -2.8 12.202599) (xy -2.798809 12.203576) (xy -2.717492 12.24704)
-        (xy -2.629259 12.273805) (xy -2.5375 12.282843) (xy -2.3625 12.282843) (xy -2.270741 12.273805) (xy -2.182508 12.24704)
-        (xy -2.101191 12.203576) (xy -2.1 12.202599) (xy -2.098809 12.203576) (xy -2.017492 12.24704) (xy -1.929259 12.273805)
-        (xy -1.8375 12.282843) (xy -1.6625 12.282843) (xy -1.570741 12.273805) (xy -1.482508 12.24704) (xy -1.401191 12.203576)
-        (xy -1.4 12.202599) (xy -1.398809 12.203576) (xy -1.317492 12.24704) (xy -1.229259 12.273805) (xy -1.1375 12.282843)
-        (xy -0.9625 12.282843) (xy -0.870741 12.273805) (xy -0.782508 12.24704) (xy -0.701191 12.203576) (xy -0.7 12.202599)
-        (xy -0.698809 12.203576) (xy -0.617492 12.24704) (xy -0.529259 12.273805) (xy -0.4375 12.282843) (xy -0.2625 12.282843)
-        (xy -0.170741 12.273805) (xy -0.082508 12.24704) (xy -0.033238 12.220705) (xy 0.028492 12.253701) (xy 0.100311 12.275487)
-        (xy 0.175 12.282843) (xy 0.20675 12.281) (xy 0.302 12.18575) (xy 0.302 11.027) (xy 0.398 11.027)
-        (xy 0.398 12.18575) (xy 0.49325 12.281) (xy 0.525 12.282843) (xy 0.599689 12.275487) (xy 0.671508 12.253701)
-        (xy 0.7 12.238471) (xy 0.728492 12.253701) (xy 0.800311 12.275487) (xy 0.875 12.282843) (xy 0.90675 12.281)
-        (xy 1.002 12.18575) (xy 1.002 11.027) (xy 0.398 11.027) (xy 0.302 11.027) (xy 0.207843 11.027)
-        (xy 0.207843 10.773) (xy 0.302 10.773) (xy 0.302 9.61425) (xy 0.398 9.61425) (xy 0.398 10.773)
-        (xy 1.002 10.773) (xy 1.002 9.61425) (xy 1.098 9.61425) (xy 1.098 10.773) (xy 1.192157 10.773)
-        (xy 1.192157 11.027) (xy 1.098 11.027) (xy 1.098 12.18575) (xy 1.19325 12.281) (xy 1.225 12.282843)
-        (xy 1.299689 12.275487) (xy 1.371508 12.253701) (xy 1.433238 12.220705) (xy 1.482508 12.24704) (xy 1.570741 12.273805)
-        (xy 1.6625 12.282843) (xy 1.8375 12.282843) (xy 1.929259 12.273805) (xy 2.017492 12.24704) (xy 2.098809 12.203576)
-        (xy 2.1 12.202599) (xy 2.101191 12.203576) (xy 2.182508 12.24704) (xy 2.270741 12.273805) (xy 2.3625 12.282843)
-        (xy 2.5375 12.282843) (xy 2.629259 12.273805) (xy 2.717492 12.24704) (xy 2.798809 12.203576) (xy 2.8 12.202599)
-        (xy 2.801191 12.203576) (xy 2.882508 12.24704) (xy 2.970741 12.273805) (xy 3.0625 12.282843) (xy 3.2375 12.282843)
-        (xy 3.329259 12.273805) (xy 3.417492 12.24704) (xy 3.466762 12.220705) (xy 3.528492 12.253701) (xy 3.600311 12.275487)
-        (xy 3.675 12.282843) (xy 3.70675 12.281) (xy 3.802 12.18575) (xy 3.802 11.027) (xy 3.898 11.027)
-        (xy 3.898 12.18575) (xy 3.99325 12.281) (xy 4.025 12.282843) (xy 4.099689 12.275487) (xy 4.171508 12.253701)
-        (xy 4.237696 12.218322) (xy 4.295711 12.170711) (xy 4.343322 12.112696) (xy 4.378701 12.046508) (xy 4.400487 11.974689)
-        (xy 4.407843 11.9) (xy 4.407725 11.85) (xy 10.167157 11.85) (xy 10.174513 11.924689) (xy 10.196299 11.996508)
-        (xy 10.231678 12.062696) (xy 10.279289 12.120711) (xy 10.337304 12.168322) (xy 10.403492 12.203701) (xy 10.475311 12.225487)
-        (xy 10.55 12.232843) (xy 10.77775 12.231) (xy 10.873 12.13575) (xy 10.873 11.577) (xy 11.127 11.577)
-        (xy 11.127 12.13575) (xy 11.22225 12.231) (xy 11.45 12.232843) (xy 11.524689 12.225487) (xy 11.596508 12.203701)
-        (xy 11.662696 12.168322) (xy 11.720711 12.120711) (xy 11.768322 12.062696) (xy 11.803701 11.996508) (xy 11.825487 11.924689)
-        (xy 11.832843 11.85) (xy 11.831 11.67225) (xy 11.73575 11.577) (xy 11.127 11.577) (xy 10.873 11.577)
-        (xy 10.26425 11.577) (xy 10.169 11.67225) (xy 10.167157 11.85) (xy 4.407725 11.85) (xy 4.406 11.12225)
-        (xy 4.31075 11.027) (xy 3.898 11.027) (xy 3.802 11.027) (xy 3.707843 11.027) (xy 3.707843 10.773)
-        (xy 3.802 10.773) (xy 3.802 10.753) (xy 3.898 10.753) (xy 3.898 10.773) (xy 4.31075 10.773)
-        (xy 4.406 10.67775) (xy 4.407843 9.9) (xy 4.400487 9.825311) (xy 4.387042 9.78099) (xy 4.565399 9.78099)
-        (xy 5.624628 10.84022) (xy 5.640473 10.859527) (xy 5.717521 10.922759) (xy 5.786309 10.959527) (xy 5.805425 10.969745)
-        (xy 5.900807 10.998678) (xy 6 11.008448) (xy 6.024854 11.006) (xy 8.184011 11.006) (xy 8.196299 11.046508)
-        (xy 8.231678 11.112696) (xy 8.279289 11.170711) (xy 8.337304 11.218322) (xy 8.403492 11.253701) (xy 8.475311 11.275487)
-        (xy 8.55 11.282843) (xy 9.45 11.282843) (xy 9.524689 11.275487) (xy 9.596508 11.253701) (xy 9.662696 11.218322)
-        (xy 9.720711 11.170711) (xy 9.768322 11.112696) (xy 9.801834 11.05) (xy 10.167157 11.05) (xy 10.169 11.22775)
-        (xy 10.26425 11.323) (xy 10.873 11.323) (xy 10.873 10.76425) (xy 11.127 10.76425) (xy 11.127 11.323)
-        (xy 11.73575 11.323) (xy 11.831 11.22775) (xy 11.832843 11.05) (xy 11.825487 10.975311) (xy 11.803701 10.903492)
-        (xy 11.768322 10.837304) (xy 11.720711 10.779289) (xy 11.662696 10.731678) (xy 11.596508 10.696299) (xy 11.524689 10.674513)
-        (xy 11.45 10.667157) (xy 11.22225 10.669) (xy 11.127 10.76425) (xy 10.873 10.76425) (xy 10.77775 10.669)
-        (xy 10.55 10.667157) (xy 10.475311 10.674513) (xy 10.403492 10.696299) (xy 10.337304 10.731678) (xy 10.279289 10.779289)
-        (xy 10.231678 10.837304) (xy 10.196299 10.903492) (xy 10.174513 10.975311) (xy 10.167157 11.05) (xy 9.801834 11.05)
-        (xy 9.803701 11.046508) (xy 9.825487 10.974689) (xy 9.832843 10.9) (xy 9.832843 10.1) (xy 9.825487 10.025311)
-        (xy 9.803701 9.953492) (xy 9.768322 9.887304) (xy 9.720711 9.829289) (xy 9.662696 9.781678) (xy 9.596508 9.746299)
-        (xy 9.524689 9.724513) (xy 9.45 9.717157) (xy 8.55 9.717157) (xy 8.475311 9.724513) (xy 8.403492 9.746299)
-        (xy 8.337304 9.781678) (xy 8.279289 9.829289) (xy 8.231678 9.887304) (xy 8.196299 9.953492) (xy 8.184011 9.994)
-        (xy 6.209592 9.994) (xy 5.365592 9.15) (xy 10.167157 9.15) (xy 10.167157 9.95) (xy 10.174513 10.024689)
-        (xy 10.196299 10.096508) (xy 10.231678 10.162696) (xy 10.279289 10.220711) (xy 10.337304 10.268322) (xy 10.403492 10.303701)
-        (xy 10.475311 10.325487) (xy 10.55 10.332843) (xy 11.45 10.332843) (xy 11.524689 10.325487) (xy 11.596508 10.303701)
-        (xy 11.662696 10.268322) (xy 11.720711 10.220711) (xy 11.768322 10.162696) (xy 11.803701 10.096508) (xy 11.825487 10.024689)
-        (xy 11.832843 9.95) (xy 11.832843 9.15) (xy 11.825487 9.075311) (xy 11.803701 9.003492) (xy 11.768322 8.937304)
-        (xy 11.720711 8.879289) (xy 11.662696 8.831678) (xy 11.596508 8.796299) (xy 11.524689 8.774513) (xy 11.506 8.772672)
-        (xy 11.506 8.384591) (xy 11.532748 8.357843) (xy 11.875 8.357843) (xy 11.988707 8.346644) (xy 12.098044 8.313477)
-        (xy 12.19881 8.259616) (xy 12.287132 8.187132) (xy 12.359616 8.09881) (xy 12.413477 7.998044) (xy 12.420467 7.975)
-        (xy 12.542157 7.975) (xy 12.549513 8.049689) (xy 12.571299 8.121508) (xy 12.606678 8.187696) (xy 12.654289 8.245711)
-        (xy 12.712304 8.293322) (xy 12.778492 8.328701) (xy 12.850311 8.350487) (xy 12.925 8.357843) (xy 13.10275 8.356)
-        (xy 13.198 8.26075) (xy 13.198 7.627) (xy 13.452 7.627) (xy 13.452 8.26075) (xy 13.54725 8.356)
-        (xy 13.725 8.357843) (xy 13.799689 8.350487) (xy 13.871508 8.328701) (xy 13.937696 8.293322) (xy 13.995711 8.245711)
-        (xy 14.043322 8.187696) (xy 14.078701 8.121508) (xy 14.100487 8.049689) (xy 14.107843 7.975) (xy 14.106 7.72225)
-        (xy 14.01075 7.627) (xy 13.452 7.627) (xy 13.198 7.627) (xy 12.63925 7.627) (xy 12.544 7.72225)
-        (xy 12.542157 7.975) (xy 12.420467 7.975) (xy 12.446644 7.888707) (xy 12.457843 7.775) (xy 12.457843 7.225)
-        (xy 12.446644 7.111293) (xy 12.413477 7.001956) (xy 12.359616 6.90119) (xy 12.287132 6.812868) (xy 12.210527 6.75)
-        (xy 12.287132 6.687132) (xy 12.359616 6.59881) (xy 12.413477 6.498044) (xy 12.446644 6.388707) (xy 12.457843 6.275)
-        (xy 12.457843 5.725) (xy 12.446644 5.611293) (xy 12.413477 5.501956) (xy 12.359616 5.40119) (xy 12.287132 5.312868)
-        (xy 12.19881 5.240384) (xy 12.098044 5.186523) (xy 11.988707 5.153356) (xy 11.875 5.142157) (xy 11.475 5.142157)
-        (xy 11.361293 5.153356) (xy 11.251956 5.186523) (xy 11.15119 5.240384) (xy 11.062868 5.312868) (xy 10.990384 5.40119)
-        (xy 10.936523 5.501956) (xy 10.903356 5.611293) (xy 10.892157 5.725) (xy 10.892157 6.275) (xy 10.903356 6.388707)
-        (xy 10.936523 6.498044) (xy 10.990384 6.59881) (xy 11.062868 6.687132) (xy 11.139473 6.75) (xy 11.062868 6.812868)
-        (xy 10.990384 6.90119) (xy 10.936523 7.001956) (xy 10.903356 7.111293) (xy 10.892157 7.225) (xy 10.892157 7.567252)
-        (xy 10.65978 7.799629) (xy 10.640474 7.815473) (xy 10.577242 7.892521) (xy 10.552127 7.939508) (xy 10.530255 7.980426)
-        (xy 10.501322 8.075808) (xy 10.491553 8.175) (xy 10.494001 8.199856) (xy 10.494001 8.772672) (xy 10.475311 8.774513)
-        (xy 10.403492 8.796299) (xy 10.337304 8.831678) (xy 10.279289 8.879289) (xy 10.231678 8.937304) (xy 10.196299 9.003492)
-        (xy 10.174513 9.075311) (xy 10.167157 9.15) (xy 5.365592 9.15) (xy 5.168233 8.952642) (xy 5.187132 8.937132)
-        (xy 5.259616 8.84881) (xy 5.313477 8.748044) (xy 5.346644 8.638707) (xy 5.353851 8.56553) (xy 5.378492 8.578701)
-        (xy 5.450311 8.600487) (xy 5.525 8.607843) (xy 5.77775 8.606) (xy 5.873 8.51075) (xy 5.873 7.902)
-        (xy 6.127 7.902) (xy 6.127 8.51075) (xy 6.22225 8.606) (xy 6.475 8.607843) (xy 6.549689 8.600487)
-        (xy 6.621508 8.578701) (xy 6.687696 8.543322) (xy 6.745711 8.495711) (xy 6.783224 8.45) (xy 6.892157 8.45)
-        (xy 6.899513 8.524689) (xy 6.921299 8.596508) (xy 6.956678 8.662696) (xy 7.004289 8.720711) (xy 7.062304 8.768322)
-        (xy 7.128492 8.803701) (xy 7.200311 8.825487) (xy 7.275 8.832843) (xy 7.77775 8.831) (xy 7.873 8.73575)
-        (xy 7.873 8.077) (xy 8.127 8.077) (xy 8.127 8.73575) (xy 8.22225 8.831) (xy 8.725 8.832843)
-        (xy 8.799689 8.825487) (xy 8.871508 8.803701) (xy 8.937696 8.768322) (xy 8.995711 8.720711) (xy 9.043322 8.662696)
-        (xy 9.078701 8.596508) (xy 9.100487 8.524689) (xy 9.107843 8.45) (xy 9.106 8.17225) (xy 9.01075 8.077)
-        (xy 8.127 8.077) (xy 7.873 8.077) (xy 6.98925 8.077) (xy 6.894 8.17225) (xy 6.892157 8.45)
-        (xy 6.783224 8.45) (xy 6.793322 8.437696) (xy 6.828701 8.371508) (xy 6.850487 8.299689) (xy 6.857843 8.225)
-        (xy 6.856 7.99725) (xy 6.76075 7.902) (xy 6.127 7.902) (xy 5.873 7.902) (xy 5.853 7.902)
-        (xy 5.853 7.648) (xy 5.873 7.648) (xy 5.873 7.628) (xy 6.127 7.628) (xy 6.127 7.648)
-        (xy 6.76075 7.648) (xy 6.856 7.55275) (xy 6.856831 7.45) (xy 6.892157 7.45) (xy 6.894 7.72775)
-        (xy 6.98925 7.823) (xy 7.873 7.823) (xy 7.873 7.16425) (xy 8.127 7.16425) (xy 8.127 7.823)
-        (xy 9.01075 7.823) (xy 9.106 7.72775) (xy 9.107843 7.45) (xy 9.100487 7.375311) (xy 9.078701 7.303492)
-        (xy 9.043322 7.237304) (xy 8.995711 7.179289) (xy 8.937696 7.131678) (xy 8.871508 7.096299) (xy 8.799689 7.074513)
-        (xy 8.725 7.067157) (xy 8.22225 7.069) (xy 8.127 7.16425) (xy 7.873 7.16425) (xy 7.77775 7.069)
-        (xy 7.275 7.067157) (xy 7.200311 7.074513) (xy 7.128492 7.096299) (xy 7.062304 7.131678) (xy 7.004289 7.179289)
-        (xy 6.956678 7.237304) (xy 6.921299 7.303492) (xy 6.899513 7.375311) (xy 6.892157 7.45) (xy 6.856831 7.45)
-        (xy 6.857843 7.325) (xy 6.850487 7.250311) (xy 6.828701 7.178492) (xy 6.793322 7.112304) (xy 6.745711 7.054289)
-        (xy 6.687696 7.006678) (xy 6.621508 6.971299) (xy 6.580967 6.959001) (xy 6.587699 6.955403) (xy 6.67981 6.87981)
-        (xy 6.755403 6.787699) (xy 6.811574 6.682611) (xy 6.82723 6.631) (xy 6.987805 6.631) (xy 6.99881 6.651589)
-        (xy 7.077512 6.747488) (xy 7.173411 6.82619) (xy 7.282821 6.884671) (xy 7.401538 6.920683) (xy 7.525 6.932843)
-        (xy 8.475 6.932843) (xy 8.598462 6.920683) (xy 8.717179 6.884671) (xy 8.826589 6.82619) (xy 8.922488 6.747488)
-        (xy 9.00119 6.651589) (xy 9.059671 6.542179) (xy 9.095683 6.423462) (xy 9.107843 6.3) (xy 9.107843 5.8)
-        (xy 9.104599 5.767059) (xy 9.890645 4.981013) (xy 9.912817 4.962817) (xy 9.985421 4.874348) (xy 10.039371 4.773415)
-        (xy 10.072593 4.663896) (xy 10.081 4.57854) (xy 10.081 4.578538) (xy 10.083811 4.550001) (xy 10.081 4.521464)
-        (xy 10.081 -3.97146) (xy 10.083811 -4) (xy 10.072593 -4.113896) (xy 10.039371 -4.223415) (xy 9.985421 -4.324348)
-        (xy 9.93101 -4.390649) (xy 9.931008 -4.390651) (xy 9.912817 -4.412817) (xy 9.890652 -4.431007) (xy 5.081 -9.240657)
-        (xy 5.081 -10.976499) (xy 5.106642 -11.002141) (xy 5.192113 -11.130058) (xy 5.250987 -11.272191) (xy 5.281 -11.423078)
-        (xy 5.281 -11.576922) (xy 5.250987 -11.727809) (xy 5.192113 -11.869942) (xy 5.106642 -11.997859) (xy 4.997859 -12.106642)
-        (xy 4.869942 -12.192113) (xy 4.727809 -12.250987) (xy 4.576922 -12.281) (xy 4.423078 -12.281) (xy 4.272191 -12.250987)
-        (xy 4.130058 -12.192113) (xy 4.002141 -12.106642) (xy 3.893358 -11.997859) (xy 3.807887 -11.869942) (xy 3.749013 -11.727809)
-        (xy 3.719 -11.576922) (xy 3.719 -11.423078) (xy 3.749013 -11.272191) (xy 3.807887 -11.130058) (xy 3.893358 -11.002141)
-        (xy 3.919 -10.976499) (xy 3.919001 -9.02855) (xy 3.916189 -9) (xy 3.927407 -8.886105) (xy 3.960629 -8.776586)
-        (xy 3.9922 -8.717521) (xy 4.01458 -8.675652) (xy 4.087184 -8.587183) (xy 4.109356 -8.568987) (xy 8.919 -3.759341)
-        (xy 8.919001 4.309341) (xy 8.061186 5.167157) (xy 7.525 5.167157) (xy 7.401538 5.179317) (xy 7.282821 5.215329)
-        (xy 7.173411 5.27381) (xy 7.077512 5.352512) (xy 6.99881 5.448411) (xy 6.987805 5.469) (xy 6.539811 5.469)
-        (xy 6.482611 5.438426) (xy 6.368584 5.403837) (xy 6.25 5.392157) (xy 5.75 5.392157) (xy 5.631416 5.403837)
-        (xy 5.517389 5.438426) (xy 5.412301 5.494597) (xy 5.32019 5.57019) (xy 5.259616 5.644) (xy 4.803539 5.644)
-        (xy 4.774999 5.641189) (xy 4.661104 5.652407) (xy 4.551585 5.685629) (xy 4.450652 5.739579) (xy 4.362183 5.812183)
-        (xy 4.343987 5.834355) (xy 4.286185 5.892157) (xy 4.225 5.892157) (xy 4.111293 5.903356) (xy 4.001956 5.936523)
-        (xy 3.90119 5.990384) (xy 3.812868 6.062868) (xy 3.740384 6.15119) (xy 3.686523 6.251956) (xy 3.653356 6.361293)
-        (xy 3.642157 6.475) (xy 3.642157 6.536185) (xy 1.35936 8.818983) (xy 1.337183 8.837183) (xy 1.277607 8.909778)
-        (xy 1.264579 8.925653) (xy 1.210629 9.026586) (xy 1.177407 9.136105) (xy 1.166189 9.25) (xy 1.169 9.27854)
-        (xy 1.169 9.54325) (xy 1.098 9.61425) (xy 1.002 9.61425) (xy 0.90675 9.519) (xy 0.875 9.517157)
-        (xy 0.800311 9.524513) (xy 0.728492 9.546299) (xy 0.7 9.561529) (xy 0.671508 9.546299) (xy 0.599689 9.524513)
-        (xy 0.525 9.517157) (xy 0.49325 9.519) (xy 0.398 9.61425) (xy 0.302 9.61425) (xy 0.20675 9.519)
-        (xy 0.197148 9.518443) (xy 7.84022 1.875372) (xy 7.859527 1.859527) (xy 7.922759 1.782479) (xy 7.969745 1.694575)
-        (xy 7.998678 1.599193) (xy 8.006 1.524854) (xy 8.006 1.524847) (xy 8.008447 1.500001) (xy 8.006 1.475155)
-        (xy 8.006 -2.975155) (xy 8.008447 -3.000001) (xy 8.006 -3.024847) (xy 8.006 -3.024854) (xy 7.998678 -3.099193)
-        (xy 7.969745 -3.194575) (xy 7.922759 -3.282479) (xy 7.859527 -3.359527) (xy 7.84022 -3.375372) (xy 3.506 -7.709591)
-        (xy 3.506 -13.576922) (xy 3.719 -13.576922) (xy 3.719 -13.423078) (xy 3.749013 -13.272191) (xy 3.807887 -13.130058)
-        (xy 3.893358 -13.002141) (xy 4.002141 -12.893358) (xy 4.130058 -12.807887) (xy 4.272191 -12.749013) (xy 4.423078 -12.719)
-        (xy 4.565409 -12.719) (xy 10.994 -6.290408) (xy 10.994001 2.475144) (xy 10.991553 2.5) (xy 11.001322 2.599192)
-        (xy 11.030255 2.694574) (xy 11.052127 2.735492) (xy 11.077242 2.782479) (xy 11.140474 2.859527) (xy 11.15978 2.875372)
-        (xy 12.494 4.209592) (xy 12.494001 5.650144) (xy 12.491553 5.675) (xy 12.501322 5.774192) (xy 12.530255 5.869574)
-        (xy 12.542157 5.89184) (xy 12.542157 6.275) (xy 12.553356 6.388707) (xy 12.586523 6.498044) (xy 12.640384 6.59881)
-        (xy 12.712868 6.687132) (xy 12.727068 6.698786) (xy 12.712304 6.706678) (xy 12.654289 6.754289) (xy 12.606678 6.812304)
-        (xy 12.571299 6.878492) (xy 12.549513 6.950311) (xy 12.542157 7.025) (xy 12.544 7.27775) (xy 12.63925 7.373)
-        (xy 13.198 7.373) (xy 13.198 7.353) (xy 13.452 7.353) (xy 13.452 7.373) (xy 14.01075 7.373)
-        (xy 14.106 7.27775) (xy 14.107843 7.025) (xy 14.100487 6.950311) (xy 14.078701 6.878492) (xy 14.043322 6.812304)
-        (xy 13.995711 6.754289) (xy 13.937696 6.706678) (xy 13.922932 6.698786) (xy 13.937132 6.687132) (xy 14.009616 6.59881)
-        (xy 14.063477 6.498044) (xy 14.096644 6.388707) (xy 14.107843 6.275) (xy 14.107843 5.725) (xy 14.096644 5.611293)
-        (xy 14.063477 5.501956) (xy 14.009616 5.40119) (xy 13.937132 5.312868) (xy 13.84881 5.240384) (xy 13.748044 5.186523)
-        (xy 13.638707 5.153356) (xy 13.525 5.142157) (xy 13.506 5.142157) (xy 13.506 4.024845) (xy 13.508447 3.999999)
-        (xy 13.506 3.975153) (xy 13.506 3.975146) (xy 13.498678 3.900807) (xy 13.469745 3.805425) (xy 13.422759 3.717521)
-        (xy 13.359527 3.640473) (xy 13.34022 3.624628) (xy 12.006 2.290409) (xy 12.006 -6.475146) (xy 12.008448 -6.5)
-        (xy 11.998678 -6.599193) (xy 11.969745 -6.694575) (xy 11.957479 -6.717522) (xy 11.922759 -6.782479) (xy 11.859527 -6.859527)
-        (xy 11.84022 -6.875372) (xy 5.281 -13.434591) (xy 5.281 -13.576922) (xy 5.250987 -13.727809) (xy 5.192113 -13.869942)
-        (xy 5.106642 -13.997859) (xy 4.997859 -14.106642) (xy 4.869942 -14.192113) (xy 4.727809 -14.250987) (xy 4.576922 -14.281)
-        (xy 4.423078 -14.281) (xy 4.272191 -14.250987) (xy 4.130058 -14.192113) (xy 4.002141 -14.106642) (xy 3.893358 -13.997859)
-        (xy 3.807887 -13.869942) (xy 3.749013 -13.727809) (xy 3.719 -13.576922) (xy 3.506 -13.576922) (xy 3.506 -13.790409)
-        (xy 4.434592 -14.719) (xy 4.576922 -14.719) (xy 4.727809 -14.749013) (xy 4.869942 -14.807887) (xy 4.997859 -14.893358)
-        (xy 5.106642 -15.002141) (xy 5.192113 -15.130058) (xy 5.250987 -15.272191) (xy 5.281 -15.423078) (xy 5.281 -15.576922)
-        (xy 5.250987 -15.727809) (xy 5.192113 -15.869942) (xy 5.106642 -15.997859) (xy 4.997859 -16.106642) (xy 4.869942 -16.192113)
-        (xy 4.727809 -16.250987) (xy 4.576922 -16.281) (xy 4.423078 -16.281) (xy 4.272191 -16.250987) (xy 4.130058 -16.192113)
-        (xy 4.002141 -16.106642) (xy 3.893358 -15.997859) (xy 3.807887 -15.869942) (xy 3.749013 -15.727809) (xy 3.719 -15.576922)
-        (xy 3.719 -15.434592) (xy 2.659785 -14.375376) (xy 2.640473 -14.359527) (xy 2.577241 -14.282479) (xy 2.530255 -14.194574)
-        (xy 2.501322 -14.099192) (xy 2.494 -14.024853) (xy 2.494 -14.024846) (xy 2.491553 -14) (xy 2.494 -13.975154)
-        (xy 2.494001 -7.524856) (xy 2.491553 -7.5) (xy 2.501322 -7.400808) (xy 2.530255 -7.305426) (xy 2.552127 -7.264508)
-        (xy 2.577242 -7.217521) (xy 2.640474 -7.140473) (xy 2.659781 -7.124628) (xy 6.994 -2.790408) (xy 6.994001 1.290407)
-        (xy -0.554831 8.83924) (xy -0.565611 8.803701) (xy -0.580255 8.755425) (xy -0.627241 8.667521) (xy -0.690473 8.590473)
-        (xy -0.70978 8.574628) (xy -7.494 1.790409) (xy -7.494 0.524517) (xy -7.401064 0.748884) (xy -7.228043 1.007829)
-        (xy -7.007829 1.228043) (xy -6.748884 1.401064) (xy -6.461161 1.520243) (xy -6.155715 1.581) (xy -5.844285 1.581)
-        (xy -5.538839 1.520243) (xy -5.251116 1.401064) (xy -4.992171 1.228043) (xy -4.771957 1.007829) (xy -4.598936 0.748884)
-        (xy -4.511055 0.536722) (xy -4.355035 1.321086) (xy -4.013624 2.145327) (xy -3.517971 2.887124) (xy -2.887124 3.517971)
-        (xy -2.145327 4.013624) (xy -1.321086 4.355035) (xy -0.446076 4.529086) (xy 0.446076 4.529086) (xy 1.321086 4.355035)
-        (xy 2.145327 4.013624) (xy 2.887124 3.517971) (xy 3.517971 2.887124) (xy 4.013624 2.145327) (xy 4.355035 1.321086)
-        (xy 4.529086 0.446076) (xy 4.529086 -0.446076) (xy 4.355035 -1.321086) (xy 4.013624 -2.145327) (xy 3.517971 -2.887124)
-        (xy 2.887124 -3.517971) (xy 2.145327 -4.013624) (xy 1.321086 -4.355035) (xy 0.446076 -4.529086) (xy -0.446076 -4.529086)
-        (xy -1.321086 -4.355035) (xy -2.145327 -4.013624) (xy -2.887124 -3.517971) (xy -3.517971 -2.887124) (xy -4.013624 -2.145327)
-        (xy -4.355035 -1.321086) (xy -4.511055 -0.536722) (xy -4.598936 -0.748884) (xy -4.771957 -1.007829) (xy -4.992171 -1.228043)
-        (xy -5.251116 -1.401064) (xy -5.538839 -1.520243) (xy -5.844285 -1.581) (xy -6.155715 -1.581) (xy -6.461161 -1.520243)
-        (xy -6.748884 -1.401064) (xy -7.007829 -1.228043) (xy -7.228043 -1.007829) (xy -7.401064 -0.748884) (xy -7.494 -0.524517)
-        (xy -7.494 -5.290409) (xy -4.15978 -8.624628) (xy -4.140473 -8.640473) (xy -4.077241 -8.717521) (xy -4.030255 -8.805425)
-        (xy -4.005782 -8.886105) (xy -4.003948 -8.892151) (xy -4.002141 -8.893358) (xy -3.893358 -9.002141) (xy -3.807887 -9.130058)
-        (xy -3.749013 -9.272191) (xy -3.719 -9.423078) (xy -3.719 -9.576922) (xy -3.749013 -9.727809) (xy -3.807887 -9.869942)
-        (xy -3.893358 -9.997859) (xy -4.002141 -10.106642) (xy -4.130058 -10.192113) (xy -4.272191 -10.250987) (xy -4.423078 -10.281)
-        (xy -4.576922 -10.281) (xy -4.727809 -10.250987) (xy -4.869942 -10.192113) (xy -4.997859 -10.106642) (xy -5.106642 -9.997859)
-        (xy -5.192113 -9.869942) (xy -5.250987 -9.727809) (xy -5.281 -9.576922) (xy -5.281 -9.423078) (xy -5.250987 -9.272191)
-        (xy -5.192113 -9.130058) (xy -5.149424 -9.066168) (xy -8.340219 -5.875372) (xy -8.359526 -5.859527) (xy -8.422758 -5.782479)
-        (xy -8.447873 -5.735492) (xy -8.469745 -5.694574) (xy -8.498678 -5.599192) (xy -8.508447 -5.5) (xy -8.505999 -5.475144)
-        (xy -8.506 1.975154) (xy -8.508447 2) (xy -8.506 2.024846) (xy -8.506 2.024853) (xy -8.498678 2.099192)
-        (xy -8.469745 2.194574) (xy -8.422759 2.282479) (xy -8.359527 2.359527) (xy -8.340215 2.375376) (xy -3.221592 7.494)
-        (xy -4.290408 7.494) (xy -9.494 2.290409) (xy -9.494 -5.790409) (xy -4.565408 -10.719) (xy -4.423078 -10.719)
-        (xy -4.272191 -10.749013) (xy -4.130058 -10.807887) (xy -4.002141 -10.893358) (xy -3.893358 -11.002141) (xy -3.807887 -11.130058)
-        (xy -3.749013 -11.272191) (xy -3.719 -11.423078) (xy -3.719 -11.576922) (xy -3.749013 -11.727809) (xy -3.807887 -11.869942)
-        (xy -3.893358 -11.997859) (xy -4.002141 -12.106642) (xy -4.130058 -12.192113) (xy -4.272191 -12.250987) (xy -4.423078 -12.281)
-        (xy -4.576922 -12.281) (xy -4.727809 -12.250987) (xy -4.869942 -12.192113) (xy -4.997859 -12.106642) (xy -5.106642 -11.997859)
-        (xy -5.192113 -11.869942) (xy -5.250987 -11.727809) (xy -5.281 -11.576922) (xy -5.281 -11.434592) (xy -10.340219 -6.375372)
-        (xy -10.359526 -6.359527) (xy -10.422758 -6.282479) (xy -10.447873 -6.235492) (xy -10.469745 -6.194574) (xy -10.498678 -6.099192)
-        (xy -10.508447 -6) (xy -10.505999 -5.975144) (xy -10.506 2.475154) (xy -10.508447 2.5) (xy -10.506 2.524846)
-        (xy -10.506 2.524853) (xy -10.498678 2.599192) (xy -10.469745 2.694574) (xy -10.422759 2.782479) (xy -10.359527 2.859527)
-        (xy -10.340215 2.875376) (xy -5.171601 8.043991) (xy -6.240417 8.043991) (xy -11.494 2.790409) (xy -11.494 -5.790409)
-        (xy -4.565408 -12.719) (xy -4.423078 -12.719) (xy -4.272191 -12.749013) (xy -4.130058 -12.807887) (xy -4.002141 -12.893358)
-        (xy -3.893358 -13.002141) (xy -3.807887 -13.130058) (xy -3.749013 -13.272191) (xy -3.719 -13.423078) (xy -3.719 -13.576922)
-        (xy -3.749013 -13.727809) (xy -3.807887 -13.869942) (xy -3.893358 -13.997859) (xy -4.002141 -14.106642) (xy -4.130058 -14.192113)
-        (xy -4.272191 -14.250987) (xy -4.423078 -14.281) (xy -4.576922 -14.281) (xy -4.727809 -14.250987) (xy -4.869942 -14.192113)
-        (xy -4.997859 -14.106642) (xy -5.106642 -13.997859) (xy -5.192113 -13.869942) (xy -5.250987 -13.727809) (xy -5.281 -13.576922)
-        (xy -5.281 -13.434592) (xy -12.340215 -6.375376) (xy -12.359527 -6.359527) (xy -12.422759 -6.282479) (xy -12.469745 -6.194574)
-        (xy -12.498678 -6.099192) (xy -12.506 -6.024853) (xy -12.506 -6.024846) (xy -12.508447 -6) (xy -12.506 -5.975154)
-        (xy -12.505999 2.975144) (xy -12.508447 3) (xy -12.498678 3.099192) (xy -12.469745 3.194574) (xy -12.447873 3.235492)
-        (xy -12.422758 3.282479) (xy -12.359526 3.359527) (xy -12.340219 3.375372) (xy -7.221592 8.494) (xy -8.290408 8.494)
-        (xy -13.494 3.290409) (xy -13.494 -6.790409) (xy -5.290408 -14.994) (xy -5.098501 -14.994) (xy -4.997859 -14.893358)
-        (xy -4.869942 -14.807887) (xy -4.727809 -14.749013) (xy -4.576922 -14.719) (xy -4.423078 -14.719) (xy -4.272191 -14.749013)
-        (xy -4.130058 -14.807887) (xy -4.002141 -14.893358) (xy -3.893358 -15.002141) (xy -3.807887 -15.130058) (xy -3.749013 -15.272191)
-        (xy -3.719 -15.423078) (xy -3.719 -15.576922) (xy -3.749013 -15.727809) (xy -3.807887 -15.869942) (xy -3.893358 -15.997859)
-        (xy -4.002141 -16.106642) (xy -4.130058 -16.192113) (xy -4.272191 -16.250987) (xy -4.423078 -16.281) (xy -4.576922 -16.281)
-        (xy -4.727809 -16.250987) (xy -4.869942 -16.192113) (xy -4.997859 -16.106642) (xy -5.098501 -16.006) (xy -5.475155 -16.006)
-        (xy -5.500001 -16.008447) (xy -5.524847 -16.006) (xy -5.524854 -16.006) (xy -5.586512 -15.999927) (xy -5.599194 -15.998678)
-        (xy -5.621393 -15.991944) (xy -5.694575 -15.969745) (xy -5.782479 -15.922759) (xy -5.859527 -15.859527) (xy -5.875372 -15.84022)
-        (xy -14.340215 -7.375376) (xy -14.359527 -7.359527) (xy -14.422759 -7.282479) (xy -14.469745 -7.194574) (xy -14.498678 -7.099192)
-        (xy -14.506 -7.024853) (xy -14.506 -7.024846) (xy -14.508447 -7) (xy -15.50903 -7) (xy -15.481027 -7.069948)
-        (xy -14.738886 -8.5095) (xy -13.863268 -9.871989) (xy -12.862102 -11.145075) (xy -11.744455 -12.31723) (xy -10.520448 -13.377838)
-        (xy -9.201166 -14.317294) (xy -7.798557 -15.127091) (xy -6.325323 -15.799894) (xy -4.794806 -16.329611) (xy -3.220867 -16.711444)
-        (xy -1.617759 -16.941937) (xy 0 -17.019)
+        (xy 101.617759 83.058063) (xy 103.220867 83.288556) (xy 104.794806 83.670389) (xy 106.325323 84.200106) (xy 107.798557 84.872909)
+        (xy 109.201166 85.682706) (xy 110.520448 86.622162) (xy 111.744455 87.68277) (xy 112.862102 88.854925) (xy 113.863268 90.128011)
+        (xy 114.738886 91.4905) (xy 115.481027 92.930052) (xy 116.082969 94.43363) (xy 116.539261 95.987619) (xy 116.845771 97.577944)
+        (xy 116.999723 99.190203) (xy 116.999723 100.809797) (xy 116.845771 102.422056) (xy 116.539261 104.012381) (xy 116.082969 105.56637)
+        (xy 115.481027 107.069948) (xy 114.738886 108.5095) (xy 113.863268 109.871989) (xy 112.862102 111.145075) (xy 111.744455 112.31723)
+        (xy 110.520448 113.377838) (xy 109.201166 114.317294) (xy 107.798557 115.127091) (xy 106.325323 115.799894) (xy 104.794806 116.329611)
+        (xy 103.220867 116.711444) (xy 101.617759 116.941937) (xy 100 117.019) (xy 98.382241 116.941937) (xy 96.779133 116.711444)
+        (xy 95.205194 116.329611) (xy 93.674677 115.799894) (xy 92.201443 115.127091) (xy 90.798834 114.317294) (xy 89.479552 113.377838)
+        (xy 88.255545 112.31723) (xy 87.857718 111.9) (xy 95.592157 111.9) (xy 95.599513 111.974689) (xy 95.621299 112.046508)
+        (xy 95.656678 112.112696) (xy 95.704289 112.170711) (xy 95.762304 112.218322) (xy 95.828492 112.253701) (xy 95.900311 112.275487)
+        (xy 95.975 112.282843) (xy 96.00675 112.281) (xy 96.102 112.18575) (xy 96.102 111.027) (xy 95.68925 111.027)
+        (xy 95.594 111.12225) (xy 95.592157 111.9) (xy 87.857718 111.9) (xy 87.137898 111.145075) (xy 86.158761 109.9)
+        (xy 95.592157 109.9) (xy 95.594 110.67775) (xy 95.68925 110.773) (xy 96.102 110.773) (xy 96.102 109.61425)
+        (xy 96.00675 109.519) (xy 95.975 109.517157) (xy 95.900311 109.524513) (xy 95.828492 109.546299) (xy 95.762304 109.581678)
+        (xy 95.704289 109.629289) (xy 95.656678 109.687304) (xy 95.621299 109.753492) (xy 95.599513 109.825311) (xy 95.592157 109.9)
+        (xy 86.158761 109.9) (xy 86.136732 109.871989) (xy 85.261114 108.5095) (xy 84.518973 107.069948) (xy 83.917031 105.56637)
+        (xy 83.460739 104.012381) (xy 83.154229 102.422056) (xy 83.000277 100.809797) (xy 83.000277 99.190203) (xy 83.154229 97.577944)
+        (xy 83.460739 95.987619) (xy 83.917031 94.43363) (xy 84.49097 93) (xy 85.491553 93) (xy 85.494 93.024846)
+        (xy 85.494001 103.475144) (xy 85.491553 103.5) (xy 85.501322 103.599192) (xy 85.530255 103.694574) (xy 85.530256 103.694575)
+        (xy 85.577242 103.782479) (xy 85.640474 103.859527) (xy 85.659781 103.875372) (xy 91.124628 109.34022) (xy 91.140473 109.359527)
+        (xy 91.217521 109.422759) (xy 91.305086 109.469564) (xy 91.305425 109.469745) (xy 91.400807 109.498678) (xy 91.5 109.508448)
+        (xy 91.524854 109.506) (xy 96.290409 109.506) (xy 96.302851 109.518443) (xy 96.29325 109.519) (xy 96.198 109.61425)
+        (xy 96.198 110.773) (xy 96.292157 110.773) (xy 96.292157 111.027) (xy 96.198 111.027) (xy 96.198 112.18575)
+        (xy 96.29325 112.281) (xy 96.325 112.282843) (xy 96.399689 112.275487) (xy 96.471508 112.253701) (xy 96.533238 112.220705)
+        (xy 96.582508 112.24704) (xy 96.670741 112.273805) (xy 96.7625 112.282843) (xy 96.9375 112.282843) (xy 97.029259 112.273805)
+        (xy 97.117492 112.24704) (xy 97.198809 112.203576) (xy 97.2 112.202599) (xy 97.201191 112.203576) (xy 97.282508 112.24704)
+        (xy 97.370741 112.273805) (xy 97.4625 112.282843) (xy 97.6375 112.282843) (xy 97.729259 112.273805) (xy 97.817492 112.24704)
+        (xy 97.898809 112.203576) (xy 97.9 112.202599) (xy 97.901191 112.203576) (xy 97.982508 112.24704) (xy 98.070741 112.273805)
+        (xy 98.1625 112.282843) (xy 98.3375 112.282843) (xy 98.429259 112.273805) (xy 98.517492 112.24704) (xy 98.598809 112.203576)
+        (xy 98.6 112.202599) (xy 98.601191 112.203576) (xy 98.682508 112.24704) (xy 98.770741 112.273805) (xy 98.8625 112.282843)
+        (xy 99.0375 112.282843) (xy 99.129259 112.273805) (xy 99.217492 112.24704) (xy 99.298809 112.203576) (xy 99.3 112.202599)
+        (xy 99.301191 112.203576) (xy 99.382508 112.24704) (xy 99.470741 112.273805) (xy 99.5625 112.282843) (xy 99.7375 112.282843)
+        (xy 99.829259 112.273805) (xy 99.917492 112.24704) (xy 99.966762 112.220705) (xy 100.028492 112.253701) (xy 100.100311 112.275487)
+        (xy 100.175 112.282843) (xy 100.20675 112.281) (xy 100.302 112.18575) (xy 100.302 111.027) (xy 100.398 111.027)
+        (xy 100.398 112.18575) (xy 100.49325 112.281) (xy 100.525 112.282843) (xy 100.599689 112.275487) (xy 100.671508 112.253701)
+        (xy 100.7 112.238471) (xy 100.728492 112.253701) (xy 100.800311 112.275487) (xy 100.875 112.282843) (xy 100.90675 112.281)
+        (xy 101.002 112.18575) (xy 101.002 111.027) (xy 100.398 111.027) (xy 100.302 111.027) (xy 100.207843 111.027)
+        (xy 100.207843 110.773) (xy 100.302 110.773) (xy 100.302 109.61425) (xy 100.398 109.61425) (xy 100.398 110.773)
+        (xy 101.002 110.773) (xy 101.002 109.61425) (xy 101.098 109.61425) (xy 101.098 110.773) (xy 101.192157 110.773)
+        (xy 101.192157 111.027) (xy 101.098 111.027) (xy 101.098 112.18575) (xy 101.19325 112.281) (xy 101.225 112.282843)
+        (xy 101.299689 112.275487) (xy 101.371508 112.253701) (xy 101.433238 112.220705) (xy 101.482508 112.24704) (xy 101.570741 112.273805)
+        (xy 101.6625 112.282843) (xy 101.8375 112.282843) (xy 101.929259 112.273805) (xy 102.017492 112.24704) (xy 102.098809 112.203576)
+        (xy 102.1 112.202599) (xy 102.101191 112.203576) (xy 102.182508 112.24704) (xy 102.270741 112.273805) (xy 102.3625 112.282843)
+        (xy 102.5375 112.282843) (xy 102.629259 112.273805) (xy 102.717492 112.24704) (xy 102.798809 112.203576) (xy 102.8 112.202599)
+        (xy 102.801191 112.203576) (xy 102.882508 112.24704) (xy 102.970741 112.273805) (xy 103.0625 112.282843) (xy 103.2375 112.282843)
+        (xy 103.329259 112.273805) (xy 103.417492 112.24704) (xy 103.466762 112.220705) (xy 103.528492 112.253701) (xy 103.600311 112.275487)
+        (xy 103.675 112.282843) (xy 103.70675 112.281) (xy 103.802 112.18575) (xy 103.802 111.027) (xy 103.898 111.027)
+        (xy 103.898 112.18575) (xy 103.99325 112.281) (xy 104.025 112.282843) (xy 104.099689 112.275487) (xy 104.171508 112.253701)
+        (xy 104.237696 112.218322) (xy 104.295711 112.170711) (xy 104.343322 112.112696) (xy 104.378701 112.046508) (xy 104.400487 111.974689)
+        (xy 104.407843 111.9) (xy 104.407725 111.85) (xy 110.167157 111.85) (xy 110.174513 111.924689) (xy 110.196299 111.996508)
+        (xy 110.231678 112.062696) (xy 110.279289 112.120711) (xy 110.337304 112.168322) (xy 110.403492 112.203701) (xy 110.475311 112.225487)
+        (xy 110.55 112.232843) (xy 110.77775 112.231) (xy 110.873 112.13575) (xy 110.873 111.577) (xy 111.127 111.577)
+        (xy 111.127 112.13575) (xy 111.22225 112.231) (xy 111.45 112.232843) (xy 111.524689 112.225487) (xy 111.596508 112.203701)
+        (xy 111.662696 112.168322) (xy 111.720711 112.120711) (xy 111.768322 112.062696) (xy 111.803701 111.996508) (xy 111.825487 111.924689)
+        (xy 111.832843 111.85) (xy 111.831 111.67225) (xy 111.73575 111.577) (xy 111.127 111.577) (xy 110.873 111.577)
+        (xy 110.26425 111.577) (xy 110.169 111.67225) (xy 110.167157 111.85) (xy 104.407725 111.85) (xy 104.406 111.12225)
+        (xy 104.31075 111.027) (xy 103.898 111.027) (xy 103.802 111.027) (xy 103.707843 111.027) (xy 103.707843 110.773)
+        (xy 103.802 110.773) (xy 103.802 110.753) (xy 103.898 110.753) (xy 103.898 110.773) (xy 104.31075 110.773)
+        (xy 104.406 110.67775) (xy 104.407843 109.9) (xy 104.400487 109.825311) (xy 104.387042 109.78099) (xy 104.565399 109.78099)
+        (xy 105.624628 110.84022) (xy 105.640473 110.859527) (xy 105.717521 110.922759) (xy 105.786309 110.959527) (xy 105.805425 110.969745)
+        (xy 105.900807 110.998678) (xy 106 111.008448) (xy 106.024854 111.006) (xy 108.184011 111.006) (xy 108.196299 111.046508)
+        (xy 108.231678 111.112696) (xy 108.279289 111.170711) (xy 108.337304 111.218322) (xy 108.403492 111.253701) (xy 108.475311 111.275487)
+        (xy 108.55 111.282843) (xy 109.45 111.282843) (xy 109.524689 111.275487) (xy 109.596508 111.253701) (xy 109.662696 111.218322)
+        (xy 109.720711 111.170711) (xy 109.768322 111.112696) (xy 109.801834 111.05) (xy 110.167157 111.05) (xy 110.169 111.22775)
+        (xy 110.26425 111.323) (xy 110.873 111.323) (xy 110.873 110.76425) (xy 111.127 110.76425) (xy 111.127 111.323)
+        (xy 111.73575 111.323) (xy 111.831 111.22775) (xy 111.832843 111.05) (xy 111.825487 110.975311) (xy 111.803701 110.903492)
+        (xy 111.768322 110.837304) (xy 111.720711 110.779289) (xy 111.662696 110.731678) (xy 111.596508 110.696299) (xy 111.524689 110.674513)
+        (xy 111.45 110.667157) (xy 111.22225 110.669) (xy 111.127 110.76425) (xy 110.873 110.76425) (xy 110.77775 110.669)
+        (xy 110.55 110.667157) (xy 110.475311 110.674513) (xy 110.403492 110.696299) (xy 110.337304 110.731678) (xy 110.279289 110.779289)
+        (xy 110.231678 110.837304) (xy 110.196299 110.903492) (xy 110.174513 110.975311) (xy 110.167157 111.05) (xy 109.801834 111.05)
+        (xy 109.803701 111.046508) (xy 109.825487 110.974689) (xy 109.832843 110.9) (xy 109.832843 110.1) (xy 109.825487 110.025311)
+        (xy 109.803701 109.953492) (xy 109.768322 109.887304) (xy 109.720711 109.829289) (xy 109.662696 109.781678) (xy 109.596508 109.746299)
+        (xy 109.524689 109.724513) (xy 109.45 109.717157) (xy 108.55 109.717157) (xy 108.475311 109.724513) (xy 108.403492 109.746299)
+        (xy 108.337304 109.781678) (xy 108.279289 109.829289) (xy 108.231678 109.887304) (xy 108.196299 109.953492) (xy 108.184011 109.994)
+        (xy 106.209592 109.994) (xy 105.365592 109.15) (xy 110.167157 109.15) (xy 110.167157 109.95) (xy 110.174513 110.024689)
+        (xy 110.196299 110.096508) (xy 110.231678 110.162696) (xy 110.279289 110.220711) (xy 110.337304 110.268322) (xy 110.403492 110.303701)
+        (xy 110.475311 110.325487) (xy 110.55 110.332843) (xy 111.45 110.332843) (xy 111.524689 110.325487) (xy 111.596508 110.303701)
+        (xy 111.662696 110.268322) (xy 111.720711 110.220711) (xy 111.768322 110.162696) (xy 111.803701 110.096508) (xy 111.825487 110.024689)
+        (xy 111.832843 109.95) (xy 111.832843 109.15) (xy 111.825487 109.075311) (xy 111.803701 109.003492) (xy 111.768322 108.937304)
+        (xy 111.720711 108.879289) (xy 111.662696 108.831678) (xy 111.596508 108.796299) (xy 111.524689 108.774513) (xy 111.506 108.772672)
+        (xy 111.506 108.384591) (xy 111.532748 108.357843) (xy 111.875 108.357843) (xy 111.988707 108.346644) (xy 112.098044 108.313477)
+        (xy 112.19881 108.259616) (xy 112.287132 108.187132) (xy 112.359616 108.09881) (xy 112.413477 107.998044) (xy 112.420467 107.975)
+        (xy 112.542157 107.975) (xy 112.549513 108.049689) (xy 112.571299 108.121508) (xy 112.606678 108.187696) (xy 112.654289 108.245711)
+        (xy 112.712304 108.293322) (xy 112.778492 108.328701) (xy 112.850311 108.350487) (xy 112.925 108.357843) (xy 113.10275 108.356)
+        (xy 113.198 108.26075) (xy 113.198 107.627) (xy 113.452 107.627) (xy 113.452 108.26075) (xy 113.54725 108.356)
+        (xy 113.725 108.357843) (xy 113.799689 108.350487) (xy 113.871508 108.328701) (xy 113.937696 108.293322) (xy 113.995711 108.245711)
+        (xy 114.043322 108.187696) (xy 114.078701 108.121508) (xy 114.100487 108.049689) (xy 114.107843 107.975) (xy 114.106 107.72225)
+        (xy 114.01075 107.627) (xy 113.452 107.627) (xy 113.198 107.627) (xy 112.63925 107.627) (xy 112.544 107.72225)
+        (xy 112.542157 107.975) (xy 112.420467 107.975) (xy 112.446644 107.888707) (xy 112.457843 107.775) (xy 112.457843 107.225)
+        (xy 112.446644 107.111293) (xy 112.413477 107.001956) (xy 112.359616 106.90119) (xy 112.287132 106.812868) (xy 112.210527 106.75)
+        (xy 112.287132 106.687132) (xy 112.359616 106.59881) (xy 112.413477 106.498044) (xy 112.446644 106.388707) (xy 112.457843 106.275)
+        (xy 112.457843 105.725) (xy 112.446644 105.611293) (xy 112.413477 105.501956) (xy 112.359616 105.40119) (xy 112.287132 105.312868)
+        (xy 112.19881 105.240384) (xy 112.098044 105.186523) (xy 111.988707 105.153356) (xy 111.875 105.142157) (xy 111.475 105.142157)
+        (xy 111.361293 105.153356) (xy 111.251956 105.186523) (xy 111.15119 105.240384) (xy 111.062868 105.312868) (xy 110.990384 105.40119)
+        (xy 110.936523 105.501956) (xy 110.903356 105.611293) (xy 110.892157 105.725) (xy 110.892157 106.275) (xy 110.903356 106.388707)
+        (xy 110.936523 106.498044) (xy 110.990384 106.59881) (xy 111.062868 106.687132) (xy 111.139473 106.75) (xy 111.062868 106.812868)
+        (xy 110.990384 106.90119) (xy 110.936523 107.001956) (xy 110.903356 107.111293) (xy 110.892157 107.225) (xy 110.892157 107.567252)
+        (xy 110.65978 107.799629) (xy 110.640474 107.815473) (xy 110.577242 107.892521) (xy 110.552127 107.939508) (xy 110.530255 107.980426)
+        (xy 110.501322 108.075808) (xy 110.491553 108.175) (xy 110.494001 108.199856) (xy 110.494001 108.772672) (xy 110.475311 108.774513)
+        (xy 110.403492 108.796299) (xy 110.337304 108.831678) (xy 110.279289 108.879289) (xy 110.231678 108.937304) (xy 110.196299 109.003492)
+        (xy 110.174513 109.075311) (xy 110.167157 109.15) (xy 105.365592 109.15) (xy 105.168233 108.952642) (xy 105.187132 108.937132)
+        (xy 105.259616 108.84881) (xy 105.313477 108.748044) (xy 105.346644 108.638707) (xy 105.353851 108.56553) (xy 105.378492 108.578701)
+        (xy 105.450311 108.600487) (xy 105.525 108.607843) (xy 105.77775 108.606) (xy 105.873 108.51075) (xy 105.873 107.902)
+        (xy 106.127 107.902) (xy 106.127 108.51075) (xy 106.22225 108.606) (xy 106.475 108.607843) (xy 106.549689 108.600487)
+        (xy 106.621508 108.578701) (xy 106.687696 108.543322) (xy 106.745711 108.495711) (xy 106.783224 108.45) (xy 106.892157 108.45)
+        (xy 106.899513 108.524689) (xy 106.921299 108.596508) (xy 106.956678 108.662696) (xy 107.004289 108.720711) (xy 107.062304 108.768322)
+        (xy 107.128492 108.803701) (xy 107.200311 108.825487) (xy 107.275 108.832843) (xy 107.77775 108.831) (xy 107.873 108.73575)
+        (xy 107.873 108.077) (xy 108.127 108.077) (xy 108.127 108.73575) (xy 108.22225 108.831) (xy 108.725 108.832843)
+        (xy 108.799689 108.825487) (xy 108.871508 108.803701) (xy 108.937696 108.768322) (xy 108.995711 108.720711) (xy 109.043322 108.662696)
+        (xy 109.078701 108.596508) (xy 109.100487 108.524689) (xy 109.107843 108.45) (xy 109.106 108.17225) (xy 109.01075 108.077)
+        (xy 108.127 108.077) (xy 107.873 108.077) (xy 106.98925 108.077) (xy 106.894 108.17225) (xy 106.892157 108.45)
+        (xy 106.783224 108.45) (xy 106.793322 108.437696) (xy 106.828701 108.371508) (xy 106.850487 108.299689) (xy 106.857843 108.225)
+        (xy 106.856 107.99725) (xy 106.76075 107.902) (xy 106.127 107.902) (xy 105.873 107.902) (xy 105.853 107.902)
+        (xy 105.853 107.648) (xy 105.873 107.648) (xy 105.873 107.628) (xy 106.127 107.628) (xy 106.127 107.648)
+        (xy 106.76075 107.648) (xy 106.856 107.55275) (xy 106.856831 107.45) (xy 106.892157 107.45) (xy 106.894 107.72775)
+        (xy 106.98925 107.823) (xy 107.873 107.823) (xy 107.873 107.16425) (xy 108.127 107.16425) (xy 108.127 107.823)
+        (xy 109.01075 107.823) (xy 109.106 107.72775) (xy 109.107843 107.45) (xy 109.100487 107.375311) (xy 109.078701 107.303492)
+        (xy 109.043322 107.237304) (xy 108.995711 107.179289) (xy 108.937696 107.131678) (xy 108.871508 107.096299) (xy 108.799689 107.074513)
+        (xy 108.725 107.067157) (xy 108.22225 107.069) (xy 108.127 107.16425) (xy 107.873 107.16425) (xy 107.77775 107.069)
+        (xy 107.275 107.067157) (xy 107.200311 107.074513) (xy 107.128492 107.096299) (xy 107.062304 107.131678) (xy 107.004289 107.179289)
+        (xy 106.956678 107.237304) (xy 106.921299 107.303492) (xy 106.899513 107.375311) (xy 106.892157 107.45) (xy 106.856831 107.45)
+        (xy 106.857843 107.325) (xy 106.850487 107.250311) (xy 106.828701 107.178492) (xy 106.793322 107.112304) (xy 106.745711 107.054289)
+        (xy 106.687696 107.006678) (xy 106.621508 106.971299) (xy 106.580967 106.959001) (xy 106.587699 106.955403) (xy 106.67981 106.87981)
+        (xy 106.755403 106.787699) (xy 106.811574 106.682611) (xy 106.82723 106.631) (xy 106.987805 106.631) (xy 106.99881 106.651589)
+        (xy 107.077512 106.747488) (xy 107.173411 106.82619) (xy 107.282821 106.884671) (xy 107.401538 106.920683) (xy 107.525 106.932843)
+        (xy 108.475 106.932843) (xy 108.598462 106.920683) (xy 108.717179 106.884671) (xy 108.826589 106.82619) (xy 108.922488 106.747488)
+        (xy 109.00119 106.651589) (xy 109.059671 106.542179) (xy 109.095683 106.423462) (xy 109.107843 106.3) (xy 109.107843 105.8)
+        (xy 109.104599 105.767059) (xy 109.890645 104.981013) (xy 109.912817 104.962817) (xy 109.985421 104.874348) (xy 110.039371 104.773415)
+        (xy 110.072593 104.663896) (xy 110.081 104.57854) (xy 110.081 104.578538) (xy 110.083811 104.550001) (xy 110.081 104.521464)
+        (xy 110.081 96.02854) (xy 110.083811 96) (xy 110.072593 95.886104) (xy 110.039371 95.776585) (xy 109.985421 95.675652)
+        (xy 109.93101 95.609351) (xy 109.931008 95.609349) (xy 109.912817 95.587183) (xy 109.890652 95.568993) (xy 105.081 90.759343)
+        (xy 105.081 89.023501) (xy 105.106642 88.997859) (xy 105.192113 88.869942) (xy 105.250987 88.727809) (xy 105.281 88.576922)
+        (xy 105.281 88.423078) (xy 105.250987 88.272191) (xy 105.192113 88.130058) (xy 105.106642 88.002141) (xy 104.997859 87.893358)
+        (xy 104.869942 87.807887) (xy 104.727809 87.749013) (xy 104.576922 87.719) (xy 104.423078 87.719) (xy 104.272191 87.749013)
+        (xy 104.130058 87.807887) (xy 104.002141 87.893358) (xy 103.893358 88.002141) (xy 103.807887 88.130058) (xy 103.749013 88.272191)
+        (xy 103.719 88.423078) (xy 103.719 88.576922) (xy 103.749013 88.727809) (xy 103.807887 88.869942) (xy 103.893358 88.997859)
+        (xy 103.919 89.023501) (xy 103.919001 90.97145) (xy 103.916189 91) (xy 103.927407 91.113895) (xy 103.960629 91.223414)
+        (xy 103.9922 91.282479) (xy 104.01458 91.324348) (xy 104.087184 91.412817) (xy 104.109356 91.431013) (xy 108.919 96.240659)
+        (xy 108.919001 104.309341) (xy 108.061186 105.167157) (xy 107.525 105.167157) (xy 107.401538 105.179317) (xy 107.282821 105.215329)
+        (xy 107.173411 105.27381) (xy 107.077512 105.352512) (xy 106.99881 105.448411) (xy 106.987805 105.469) (xy 106.539811 105.469)
+        (xy 106.482611 105.438426) (xy 106.368584 105.403837) (xy 106.25 105.392157) (xy 105.75 105.392157) (xy 105.631416 105.403837)
+        (xy 105.517389 105.438426) (xy 105.412301 105.494597) (xy 105.32019 105.57019) (xy 105.259616 105.644) (xy 104.803539 105.644)
+        (xy 104.774999 105.641189) (xy 104.661104 105.652407) (xy 104.551585 105.685629) (xy 104.450652 105.739579) (xy 104.362183 105.812183)
+        (xy 104.343987 105.834355) (xy 104.286185 105.892157) (xy 104.225 105.892157) (xy 104.111293 105.903356) (xy 104.001956 105.936523)
+        (xy 103.90119 105.990384) (xy 103.812868 106.062868) (xy 103.740384 106.15119) (xy 103.686523 106.251956) (xy 103.653356 106.361293)
+        (xy 103.642157 106.475) (xy 103.642157 106.536185) (xy 101.35936 108.818983) (xy 101.337183 108.837183) (xy 101.277607 108.909778)
+        (xy 101.264579 108.925653) (xy 101.210629 109.026586) (xy 101.177407 109.136105) (xy 101.166189 109.25) (xy 101.169 109.27854)
+        (xy 101.169 109.54325) (xy 101.098 109.61425) (xy 101.002 109.61425) (xy 100.90675 109.519) (xy 100.875 109.517157)
+        (xy 100.800311 109.524513) (xy 100.728492 109.546299) (xy 100.7 109.561529) (xy 100.671508 109.546299) (xy 100.599689 109.524513)
+        (xy 100.525 109.517157) (xy 100.49325 109.519) (xy 100.398 109.61425) (xy 100.302 109.61425) (xy 100.20675 109.519)
+        (xy 100.197148 109.518443) (xy 107.84022 101.875372) (xy 107.859527 101.859527) (xy 107.922759 101.782479) (xy 107.969745 101.694575)
+        (xy 107.998678 101.599193) (xy 108.006 101.524854) (xy 108.006 101.524847) (xy 108.008447 101.500001) (xy 108.006 101.475155)
+        (xy 108.006 97.024845) (xy 108.008447 96.999999) (xy 108.006 96.975153) (xy 108.006 96.975146) (xy 107.998678 96.900807)
+        (xy 107.969745 96.805425) (xy 107.922759 96.717521) (xy 107.859527 96.640473) (xy 107.84022 96.624628) (xy 103.506 92.290409)
+        (xy 103.506 86.423078) (xy 103.719 86.423078) (xy 103.719 86.576922) (xy 103.749013 86.727809) (xy 103.807887 86.869942)
+        (xy 103.893358 86.997859) (xy 104.002141 87.106642) (xy 104.130058 87.192113) (xy 104.272191 87.250987) (xy 104.423078 87.281)
+        (xy 104.565409 87.281) (xy 110.994 93.709592) (xy 110.994001 102.475144) (xy 110.991553 102.5) (xy 111.001322 102.599192)
+        (xy 111.030255 102.694574) (xy 111.052127 102.735492) (xy 111.077242 102.782479) (xy 111.140474 102.859527) (xy 111.15978 102.875372)
+        (xy 112.494 104.209592) (xy 112.494001 105.650144) (xy 112.491553 105.675) (xy 112.501322 105.774192) (xy 112.530255 105.869574)
+        (xy 112.542157 105.89184) (xy 112.542157 106.275) (xy 112.553356 106.388707) (xy 112.586523 106.498044) (xy 112.640384 106.59881)
+        (xy 112.712868 106.687132) (xy 112.727068 106.698786) (xy 112.712304 106.706678) (xy 112.654289 106.754289) (xy 112.606678 106.812304)
+        (xy 112.571299 106.878492) (xy 112.549513 106.950311) (xy 112.542157 107.025) (xy 112.544 107.27775) (xy 112.63925 107.373)
+        (xy 113.198 107.373) (xy 113.198 107.353) (xy 113.452 107.353) (xy 113.452 107.373) (xy 114.01075 107.373)
+        (xy 114.106 107.27775) (xy 114.107843 107.025) (xy 114.100487 106.950311) (xy 114.078701 106.878492) (xy 114.043322 106.812304)
+        (xy 113.995711 106.754289) (xy 113.937696 106.706678) (xy 113.922932 106.698786) (xy 113.937132 106.687132) (xy 114.009616 106.59881)
+        (xy 114.063477 106.498044) (xy 114.096644 106.388707) (xy 114.107843 106.275) (xy 114.107843 105.725) (xy 114.096644 105.611293)
+        (xy 114.063477 105.501956) (xy 114.009616 105.40119) (xy 113.937132 105.312868) (xy 113.84881 105.240384) (xy 113.748044 105.186523)
+        (xy 113.638707 105.153356) (xy 113.525 105.142157) (xy 113.506 105.142157) (xy 113.506 104.024845) (xy 113.508447 103.999999)
+        (xy 113.506 103.975153) (xy 113.506 103.975146) (xy 113.498678 103.900807) (xy 113.469745 103.805425) (xy 113.422759 103.717521)
+        (xy 113.359527 103.640473) (xy 113.34022 103.624628) (xy 112.006 102.290409) (xy 112.006 93.524854) (xy 112.008448 93.5)
+        (xy 111.998678 93.400807) (xy 111.969745 93.305425) (xy 111.957479 93.282478) (xy 111.922759 93.217521) (xy 111.859527 93.140473)
+        (xy 111.84022 93.124628) (xy 105.281 86.565409) (xy 105.281 86.423078) (xy 105.250987 86.272191) (xy 105.192113 86.130058)
+        (xy 105.106642 86.002141) (xy 104.997859 85.893358) (xy 104.869942 85.807887) (xy 104.727809 85.749013) (xy 104.576922 85.719)
+        (xy 104.423078 85.719) (xy 104.272191 85.749013) (xy 104.130058 85.807887) (xy 104.002141 85.893358) (xy 103.893358 86.002141)
+        (xy 103.807887 86.130058) (xy 103.749013 86.272191) (xy 103.719 86.423078) (xy 103.506 86.423078) (xy 103.506 86.209591)
+        (xy 104.434592 85.281) (xy 104.576922 85.281) (xy 104.727809 85.250987) (xy 104.869942 85.192113) (xy 104.997859 85.106642)
+        (xy 105.106642 84.997859) (xy 105.192113 84.869942) (xy 105.250987 84.727809) (xy 105.281 84.576922) (xy 105.281 84.423078)
+        (xy 105.250987 84.272191) (xy 105.192113 84.130058) (xy 105.106642 84.002141) (xy 104.997859 83.893358) (xy 104.869942 83.807887)
+        (xy 104.727809 83.749013) (xy 104.576922 83.719) (xy 104.423078 83.719) (xy 104.272191 83.749013) (xy 104.130058 83.807887)
+        (xy 104.002141 83.893358) (xy 103.893358 84.002141) (xy 103.807887 84.130058) (xy 103.749013 84.272191) (xy 103.719 84.423078)
+        (xy 103.719 84.565408) (xy 102.659785 85.624624) (xy 102.640473 85.640473) (xy 102.577241 85.717521) (xy 102.530255 85.805426)
+        (xy 102.501322 85.900808) (xy 102.494 85.975147) (xy 102.494 85.975154) (xy 102.491553 86) (xy 102.494 86.024846)
+        (xy 102.494001 92.475144) (xy 102.491553 92.5) (xy 102.501322 92.599192) (xy 102.530255 92.694574) (xy 102.552127 92.735492)
+        (xy 102.577242 92.782479) (xy 102.640474 92.859527) (xy 102.659781 92.875372) (xy 106.994 97.209592) (xy 106.994001 101.290407)
+        (xy 99.445169 108.83924) (xy 99.434389 108.803701) (xy 99.419745 108.755425) (xy 99.372759 108.667521) (xy 99.309527 108.590473)
+        (xy 99.29022 108.574628) (xy 92.506 101.790409) (xy 92.506 100.524517) (xy 92.598936 100.748884) (xy 92.771957 101.007829)
+        (xy 92.992171 101.228043) (xy 93.251116 101.401064) (xy 93.538839 101.520243) (xy 93.844285 101.581) (xy 94.155715 101.581)
+        (xy 94.461161 101.520243) (xy 94.748884 101.401064) (xy 95.007829 101.228043) (xy 95.228043 101.007829) (xy 95.401064 100.748884)
+        (xy 95.488945 100.536722) (xy 95.644965 101.321086) (xy 95.986376 102.145327) (xy 96.482029 102.887124) (xy 97.112876 103.517971)
+        (xy 97.854673 104.013624) (xy 98.678914 104.355035) (xy 99.553924 104.529086) (xy 100.446076 104.529086) (xy 101.321086 104.355035)
+        (xy 102.145327 104.013624) (xy 102.887124 103.517971) (xy 103.517971 102.887124) (xy 104.013624 102.145327) (xy 104.355035 101.321086)
+        (xy 104.529086 100.446076) (xy 104.529086 99.553924) (xy 104.355035 98.678914) (xy 104.013624 97.854673) (xy 103.517971 97.112876)
+        (xy 102.887124 96.482029) (xy 102.145327 95.986376) (xy 101.321086 95.644965) (xy 100.446076 95.470914) (xy 99.553924 95.470914)
+        (xy 98.678914 95.644965) (xy 97.854673 95.986376) (xy 97.112876 96.482029) (xy 96.482029 97.112876) (xy 95.986376 97.854673)
+        (xy 95.644965 98.678914) (xy 95.488945 99.463278) (xy 95.401064 99.251116) (xy 95.228043 98.992171) (xy 95.007829 98.771957)
+        (xy 94.748884 98.598936) (xy 94.461161 98.479757) (xy 94.155715 98.419) (xy 93.844285 98.419) (xy 93.538839 98.479757)
+        (xy 93.251116 98.598936) (xy 92.992171 98.771957) (xy 92.771957 98.992171) (xy 92.598936 99.251116) (xy 92.506 99.475483)
+        (xy 92.506 94.709591) (xy 95.84022 91.375372) (xy 95.859527 91.359527) (xy 95.922759 91.282479) (xy 95.969745 91.194575)
+        (xy 95.994218 91.113895) (xy 95.996052 91.107849) (xy 95.997859 91.106642) (xy 96.106642 90.997859) (xy 96.192113 90.869942)
+        (xy 96.250987 90.727809) (xy 96.281 90.576922) (xy 96.281 90.423078) (xy 96.250987 90.272191) (xy 96.192113 90.130058)
+        (xy 96.106642 90.002141) (xy 95.997859 89.893358) (xy 95.869942 89.807887) (xy 95.727809 89.749013) (xy 95.576922 89.719)
+        (xy 95.423078 89.719) (xy 95.272191 89.749013) (xy 95.130058 89.807887) (xy 95.002141 89.893358) (xy 94.893358 90.002141)
+        (xy 94.807887 90.130058) (xy 94.749013 90.272191) (xy 94.719 90.423078) (xy 94.719 90.576922) (xy 94.749013 90.727809)
+        (xy 94.807887 90.869942) (xy 94.850576 90.933832) (xy 91.659781 94.124628) (xy 91.640474 94.140473) (xy 91.577242 94.217521)
+        (xy 91.552127 94.264508) (xy 91.530255 94.305426) (xy 91.501322 94.400808) (xy 91.491553 94.5) (xy 91.494001 94.524856)
+        (xy 91.494 101.975154) (xy 91.491553 102) (xy 91.494 102.024846) (xy 91.494 102.024853) (xy 91.501322 102.099192)
+        (xy 91.530255 102.194574) (xy 91.577241 102.282479) (xy 91.640473 102.359527) (xy 91.659785 102.375376) (xy 96.778408 107.494)
+        (xy 95.709592 107.494) (xy 90.506 102.290409) (xy 90.506 94.209591) (xy 95.434592 89.281) (xy 95.576922 89.281)
+        (xy 95.727809 89.250987) (xy 95.869942 89.192113) (xy 95.997859 89.106642) (xy 96.106642 88.997859) (xy 96.192113 88.869942)
+        (xy 96.250987 88.727809) (xy 96.281 88.576922) (xy 96.281 88.423078) (xy 96.250987 88.272191) (xy 96.192113 88.130058)
+        (xy 96.106642 88.002141) (xy 95.997859 87.893358) (xy 95.869942 87.807887) (xy 95.727809 87.749013) (xy 95.576922 87.719)
+        (xy 95.423078 87.719) (xy 95.272191 87.749013) (xy 95.130058 87.807887) (xy 95.002141 87.893358) (xy 94.893358 88.002141)
+        (xy 94.807887 88.130058) (xy 94.749013 88.272191) (xy 94.719 88.423078) (xy 94.719 88.565408) (xy 89.659781 93.624628)
+        (xy 89.640474 93.640473) (xy 89.577242 93.717521) (xy 89.552127 93.764508) (xy 89.530255 93.805426) (xy 89.501322 93.900808)
+        (xy 89.491553 94) (xy 89.494001 94.024856) (xy 89.494 102.475154) (xy 89.491553 102.5) (xy 89.494 102.524846)
+        (xy 89.494 102.524853) (xy 89.501322 102.599192) (xy 89.530255 102.694574) (xy 89.577241 102.782479) (xy 89.640473 102.859527)
+        (xy 89.659785 102.875376) (xy 94.828399 108.043991) (xy 93.759583 108.043991) (xy 88.506 102.790409) (xy 88.506 94.209591)
+        (xy 95.434592 87.281) (xy 95.576922 87.281) (xy 95.727809 87.250987) (xy 95.869942 87.192113) (xy 95.997859 87.106642)
+        (xy 96.106642 86.997859) (xy 96.192113 86.869942) (xy 96.250987 86.727809) (xy 96.281 86.576922) (xy 96.281 86.423078)
+        (xy 96.250987 86.272191) (xy 96.192113 86.130058) (xy 96.106642 86.002141) (xy 95.997859 85.893358) (xy 95.869942 85.807887)
+        (xy 95.727809 85.749013) (xy 95.576922 85.719) (xy 95.423078 85.719) (xy 95.272191 85.749013) (xy 95.130058 85.807887)
+        (xy 95.002141 85.893358) (xy 94.893358 86.002141) (xy 94.807887 86.130058) (xy 94.749013 86.272191) (xy 94.719 86.423078)
+        (xy 94.719 86.565408) (xy 87.659785 93.624624) (xy 87.640473 93.640473) (xy 87.577241 93.717521) (xy 87.530255 93.805426)
+        (xy 87.501322 93.900808) (xy 87.494 93.975147) (xy 87.494 93.975154) (xy 87.491553 94) (xy 87.494 94.024846)
+        (xy 87.494001 102.975144) (xy 87.491553 103) (xy 87.501322 103.099192) (xy 87.530255 103.194574) (xy 87.552127 103.235492)
+        (xy 87.577242 103.282479) (xy 87.640474 103.359527) (xy 87.659781 103.375372) (xy 92.778408 108.494) (xy 91.709592 108.494)
+        (xy 86.506 103.290409) (xy 86.506 93.209591) (xy 94.709592 85.006) (xy 94.901499 85.006) (xy 95.002141 85.106642)
+        (xy 95.130058 85.192113) (xy 95.272191 85.250987) (xy 95.423078 85.281) (xy 95.576922 85.281) (xy 95.727809 85.250987)
+        (xy 95.869942 85.192113) (xy 95.997859 85.106642) (xy 96.106642 84.997859) (xy 96.192113 84.869942) (xy 96.250987 84.727809)
+        (xy 96.281 84.576922) (xy 96.281 84.423078) (xy 96.250987 84.272191) (xy 96.192113 84.130058) (xy 96.106642 84.002141)
+        (xy 95.997859 83.893358) (xy 95.869942 83.807887) (xy 95.727809 83.749013) (xy 95.576922 83.719) (xy 95.423078 83.719)
+        (xy 95.272191 83.749013) (xy 95.130058 83.807887) (xy 95.002141 83.893358) (xy 94.901499 83.994) (xy 94.524845 83.994)
+        (xy 94.499999 83.991553) (xy 94.475153 83.994) (xy 94.475146 83.994) (xy 94.413488 84.000073) (xy 94.400806 84.001322)
+        (xy 94.378607 84.008056) (xy 94.305425 84.030255) (xy 94.217521 84.077241) (xy 94.140473 84.140473) (xy 94.124628 84.15978)
+        (xy 85.659785 92.624624) (xy 85.640473 92.640473) (xy 85.577241 92.717521) (xy 85.530255 92.805426) (xy 85.501322 92.900808)
+        (xy 85.494 92.975147) (xy 85.494 92.975154) (xy 85.491553 93) (xy 84.49097 93) (xy 84.518973 92.930052)
+        (xy 85.261114 91.4905) (xy 86.136732 90.128011) (xy 87.137898 88.854925) (xy 88.255545 87.68277) (xy 89.479552 86.622162)
+        (xy 90.798834 85.682706) (xy 92.201443 84.872909) (xy 93.674677 84.200106) (xy 95.205194 83.670389) (xy 96.779133 83.288556)
+        (xy 98.382241 83.058063) (xy 100 82.981)
       )
     )
   )
-  (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 6208EBFD) (hatch edge 0.508)
+  (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 620B8EC8) (hatch edge 0.508)
     (connect_pads (clearance 0.254))
     (min_thickness 0.254)
     (fill yes (arc_segments 32) (thermal_gap 0.254) (thermal_bridge_width 0.508))
     (polygon
       (pts
-        (xy 20 20) (xy -20 20) (xy -20 -20) (xy 20 -20)
+        (xy 120 120) (xy 80 120) (xy 80 80) (xy 120 80)
       )
     )
     (filled_polygon
       (pts
-        (xy 1.617759 -16.941937) (xy 3.220867 -16.711444) (xy 4.794806 -16.329611) (xy 6.325323 -15.799894) (xy 7.798557 -15.127091)
-        (xy 9.201166 -14.317294) (xy 10.520448 -13.377838) (xy 11.744455 -12.31723) (xy 12.862102 -11.145075) (xy 13.863268 -9.871989)
-        (xy 14.738886 -8.5095) (xy 15.481027 -7.069948) (xy 16.082969 -5.56637) (xy 16.539261 -4.012381) (xy 16.845771 -2.422056)
-        (xy 16.999723 -0.809797) (xy 16.999723 0.809797) (xy 16.845771 2.422056) (xy 16.539261 4.012381) (xy 16.082969 5.56637)
-        (xy 15.481027 7.069948) (xy 14.738886 8.5095) (xy 13.863268 9.871989) (xy 12.862102 11.145075) (xy 11.744455 12.31723)
-        (xy 10.520448 13.377838) (xy 9.201166 14.317294) (xy 7.798557 15.127091) (xy 6.325323 15.799894) (xy 4.794806 16.329611)
-        (xy 3.220867 16.711444) (xy 1.617759 16.941937) (xy 0 17.019) (xy -1.617759 16.941937) (xy -3.220867 16.711444)
-        (xy -4.794806 16.329611) (xy -6.325323 15.799894) (xy -7.798557 15.127091) (xy -9.201166 14.317294) (xy -10.520448 13.377838)
-        (xy -11.744455 12.31723) (xy -12.862102 11.145075) (xy -13.863268 9.871989) (xy -14.738886 8.5095) (xy -15.481027 7.069948)
-        (xy -16.082969 5.56637) (xy -16.539261 4.012381) (xy -16.845771 2.422056) (xy -16.999723 0.809797) (xy -16.999723 -0.155715)
-        (xy -7.581 -0.155715) (xy -7.581 0.155715) (xy -7.520243 0.461161) (xy -7.401064 0.748884) (xy -7.228043 1.007829)
-        (xy -7.007829 1.228043) (xy -6.748884 1.401064) (xy -6.461161 1.520243) (xy -6.155715 1.581) (xy -5.844285 1.581)
-        (xy -5.538839 1.520243) (xy -5.251116 1.401064) (xy -4.992171 1.228043) (xy -4.771957 1.007829) (xy -4.598936 0.748884)
-        (xy -4.511055 0.536722) (xy -4.355035 1.321086) (xy -4.013624 2.145327) (xy -3.517971 2.887124) (xy -2.887124 3.517971)
-        (xy -2.145327 4.013624) (xy -1.321086 4.355035) (xy -0.446076 4.529086) (xy 0.446076 4.529086) (xy 1.321086 4.355035)
-        (xy 2.145327 4.013624) (xy 2.887124 3.517971) (xy 3.517971 2.887124) (xy 4.013624 2.145327) (xy 4.355035 1.321086)
-        (xy 4.529086 0.446076) (xy 4.529086 -0.446076) (xy 4.355035 -1.321086) (xy 4.013624 -2.145327) (xy 3.517971 -2.887124)
-        (xy 2.887124 -3.517971) (xy 2.145327 -4.013624) (xy 1.321086 -4.355035) (xy 0.446076 -4.529086) (xy -0.446076 -4.529086)
-        (xy -1.321086 -4.355035) (xy -2.145327 -4.013624) (xy -2.887124 -3.517971) (xy -3.517971 -2.887124) (xy -4.013624 -2.145327)
-        (xy -4.355035 -1.321086) (xy -4.511055 -0.536722) (xy -4.598936 -0.748884) (xy -4.771957 -1.007829) (xy -4.992171 -1.228043)
-        (xy -5.251116 -1.401064) (xy -5.538839 -1.520243) (xy -5.844285 -1.581) (xy -6.155715 -1.581) (xy -6.461161 -1.520243)
-        (xy -6.748884 -1.401064) (xy -7.007829 -1.228043) (xy -7.228043 -1.007829) (xy -7.401064 -0.748884) (xy -7.520243 -0.461161)
-        (xy -7.581 -0.155715) (xy -16.999723 -0.155715) (xy -16.999723 -0.809797) (xy -16.845771 -2.422056) (xy -16.539261 -4.012381)
-        (xy -16.082969 -5.56637) (xy -15.481027 -7.069948) (xy -14.738886 -8.5095) (xy -13.863268 -9.871989) (xy -12.862102 -11.145075)
-        (xy -11.744455 -12.31723) (xy -10.520448 -13.377838) (xy -9.201166 -14.317294) (xy -7.798557 -15.127091) (xy -6.813564 -15.576922)
-        (xy -5.281 -15.576922) (xy -5.281 -15.423078) (xy -5.250987 -15.272191) (xy -5.192113 -15.130058) (xy -5.106642 -15.002141)
-        (xy -4.997859 -14.893358) (xy -4.869942 -14.807887) (xy -4.727809 -14.749013) (xy -4.576922 -14.719) (xy -4.423078 -14.719)
-        (xy -4.272191 -14.749013) (xy -4.130058 -14.807887) (xy -4.002141 -14.893358) (xy -3.96172 -14.933779) (xy -3.839791 -14.785209)
-        (xy -3.686608 -14.659495) (xy -3.511842 -14.566081) (xy -3.32221 -14.508557) (xy -3.235331 -14.5) (xy -3.32221 -14.491443)
-        (xy -3.511842 -14.433919) (xy -3.686608 -14.340505) (xy -3.839791 -14.214791) (xy -3.96172 -14.066221) (xy -4.002141 -14.106642)
-        (xy -4.130058 -14.192113) (xy -4.272191 -14.250987) (xy -4.423078 -14.281) (xy -4.576922 -14.281) (xy -4.727809 -14.250987)
-        (xy -4.869942 -14.192113) (xy -4.997859 -14.106642) (xy -5.106642 -13.997859) (xy -5.192113 -13.869942) (xy -5.250987 -13.727809)
-        (xy -5.281 -13.576922) (xy -5.281 -13.423078) (xy -5.250987 -13.272191) (xy -5.192113 -13.130058) (xy -5.106642 -13.002141)
-        (xy -4.997859 -12.893358) (xy -4.869942 -12.807887) (xy -4.727809 -12.749013) (xy -4.576922 -12.719) (xy -4.423078 -12.719)
-        (xy -4.272191 -12.749013) (xy -4.130058 -12.807887) (xy -4.002141 -12.893358) (xy -3.96172 -12.933779) (xy -3.839791 -12.785209)
-        (xy -3.686608 -12.659495) (xy -3.511842 -12.566081) (xy -3.32221 -12.508557) (xy -3.235331 -12.5) (xy -3.32221 -12.491443)
-        (xy -3.511842 -12.433919) (xy -3.686608 -12.340505) (xy -3.839791 -12.214791) (xy -3.96172 -12.066221) (xy -4.002141 -12.106642)
-        (xy -4.130058 -12.192113) (xy -4.272191 -12.250987) (xy -4.423078 -12.281) (xy -4.576922 -12.281) (xy -4.727809 -12.250987)
-        (xy -4.869942 -12.192113) (xy -4.997859 -12.106642) (xy -5.106642 -11.997859) (xy -5.192113 -11.869942) (xy -5.250987 -11.727809)
-        (xy -5.281 -11.576922) (xy -5.281 -11.423078) (xy -5.250987 -11.272191) (xy -5.192113 -11.130058) (xy -5.106642 -11.002141)
-        (xy -4.997859 -10.893358) (xy -4.869942 -10.807887) (xy -4.727809 -10.749013) (xy -4.576922 -10.719) (xy -4.423078 -10.719)
-        (xy -4.272191 -10.749013) (xy -4.130058 -10.807887) (xy -4.002141 -10.893358) (xy -3.96172 -10.933779) (xy -3.839791 -10.785209)
-        (xy -3.686608 -10.659495) (xy -3.511842 -10.566081) (xy -3.32221 -10.508557) (xy -3.235331 -10.5) (xy -3.32221 -10.491443)
-        (xy -3.511842 -10.433919) (xy -3.686608 -10.340505) (xy -3.839791 -10.214791) (xy -3.96172 -10.066221) (xy -4.002141 -10.106642)
-        (xy -4.130058 -10.192113) (xy -4.272191 -10.250987) (xy -4.423078 -10.281) (xy -4.576922 -10.281) (xy -4.727809 -10.250987)
-        (xy -4.869942 -10.192113) (xy -4.997859 -10.106642) (xy -5.106642 -9.997859) (xy -5.192113 -9.869942) (xy -5.250987 -9.727809)
-        (xy -5.281 -9.576922) (xy -5.281 -9.423078) (xy -5.250987 -9.272191) (xy -5.192113 -9.130058) (xy -5.106642 -9.002141)
-        (xy -4.997859 -8.893358) (xy -4.869942 -8.807887) (xy -4.727809 -8.749013) (xy -4.576922 -8.719) (xy -4.423078 -8.719)
-        (xy -4.272191 -8.749013) (xy -4.130058 -8.807887) (xy -4.002141 -8.893358) (xy -3.96172 -8.933779) (xy -3.839791 -8.785209)
-        (xy -3.686608 -8.659495) (xy -3.511842 -8.566081) (xy -3.32221 -8.508557) (xy -3.174414 -8.494) (xy -1.825586 -8.494)
-        (xy -1.67779 -8.508557) (xy -1.488158 -8.566081) (xy -1.313392 -8.659495) (xy -1.160209 -8.785209) (xy -1.034495 -8.938392)
-        (xy -0.941081 -9.113158) (xy -0.909142 -9.21845) (xy 0.909203 -9.21845) (xy 0.967983 -9.046693) (xy 1.073847 -8.878453)
-        (xy 1.210499 -8.734099) (xy 1.372687 -8.619178) (xy 1.554179 -8.538106) (xy 1.748 -8.494) (xy 2.373 -8.494)
-        (xy 2.373 -9.373) (xy 2.627 -9.373) (xy 2.627 -8.494) (xy 3.252 -8.494) (xy 3.445821 -8.538106)
-        (xy 3.627313 -8.619178) (xy 3.789501 -8.734099) (xy 3.926153 -8.878453) (xy 4.032017 -9.046693) (xy 4.090797 -9.21845)
-        (xy 4.026852 -9.373) (xy 2.627 -9.373) (xy 2.373 -9.373) (xy 0.973148 -9.373) (xy 0.909203 -9.21845)
-        (xy -0.909142 -9.21845) (xy -0.883557 -9.30279) (xy -0.864133 -9.5) (xy -0.883557 -9.69721) (xy -0.941081 -9.886842)
-        (xy -1.034495 -10.061608) (xy -1.160209 -10.214791) (xy -1.313392 -10.340505) (xy -1.488158 -10.433919) (xy -1.67779 -10.491443)
-        (xy -1.764669 -10.5) (xy -1.67779 -10.508557) (xy -1.488158 -10.566081) (xy -1.313392 -10.659495) (xy -1.160209 -10.785209)
-        (xy -1.034495 -10.938392) (xy -0.941081 -11.113158) (xy -0.883557 -11.30279) (xy -0.864133 -11.5) (xy -0.883557 -11.69721)
-        (xy -0.941081 -11.886842) (xy -1.034495 -12.061608) (xy -1.160209 -12.214791) (xy -1.313392 -12.340505) (xy -1.488158 -12.433919)
-        (xy -1.67779 -12.491443) (xy -1.764669 -12.5) (xy -1.67779 -12.508557) (xy -1.488158 -12.566081) (xy -1.313392 -12.659495)
-        (xy -1.160209 -12.785209) (xy -1.034495 -12.938392) (xy -0.941081 -13.113158) (xy -0.883557 -13.30279) (xy -0.864133 -13.5)
-        (xy -0.883557 -13.69721) (xy -0.941081 -13.886842) (xy -1.034495 -14.061608) (xy -1.160209 -14.214791) (xy -1.313392 -14.340505)
-        (xy -1.488158 -14.433919) (xy -1.67779 -14.491443) (xy -1.764669 -14.5) (xy -1.67779 -14.508557) (xy -1.488158 -14.566081)
-        (xy -1.313392 -14.659495) (xy -1.160209 -14.785209) (xy -1.034495 -14.938392) (xy -0.941081 -15.113158) (xy -0.883557 -15.30279)
-        (xy -0.864133 -15.5) (xy 0.864133 -15.5) (xy 0.883557 -15.30279) (xy 0.941081 -15.113158) (xy 1.034495 -14.938392)
-        (xy 1.160209 -14.785209) (xy 1.313392 -14.659495) (xy 1.488158 -14.566081) (xy 1.67779 -14.508557) (xy 1.764669 -14.5)
-        (xy 1.67779 -14.491443) (xy 1.488158 -14.433919) (xy 1.313392 -14.340505) (xy 1.160209 -14.214791) (xy 1.034495 -14.061608)
-        (xy 0.941081 -13.886842) (xy 0.883557 -13.69721) (xy 0.864133 -13.5) (xy 0.883557 -13.30279) (xy 0.941081 -13.113158)
-        (xy 1.034495 -12.938392) (xy 1.160209 -12.785209) (xy 1.313392 -12.659495) (xy 1.488158 -12.566081) (xy 1.67779 -12.508557)
-        (xy 1.764669 -12.5) (xy 1.67779 -12.491443) (xy 1.488158 -12.433919) (xy 1.313392 -12.340505) (xy 1.160209 -12.214791)
-        (xy 1.034495 -12.061608) (xy 0.941081 -11.886842) (xy 0.883557 -11.69721) (xy 0.864133 -11.5) (xy 0.883557 -11.30279)
-        (xy 0.941081 -11.113158) (xy 1.034495 -10.938392) (xy 1.160209 -10.785209) (xy 1.313392 -10.659495) (xy 1.488158 -10.566081)
-        (xy 1.67779 -10.508557) (xy 1.734633 -10.502958) (xy 1.554179 -10.461894) (xy 1.372687 -10.380822) (xy 1.210499 -10.265901)
-        (xy 1.073847 -10.121547) (xy 0.967983 -9.953307) (xy 0.909203 -9.78155) (xy 0.973148 -9.627) (xy 2.373 -9.627)
-        (xy 2.373 -9.647) (xy 2.627 -9.647) (xy 2.627 -9.627) (xy 4.026852 -9.627) (xy 4.090797 -9.78155)
-        (xy 4.032017 -9.953307) (xy 3.926153 -10.121547) (xy 3.789501 -10.265901) (xy 3.627313 -10.380822) (xy 3.445821 -10.461894)
-        (xy 3.265367 -10.502958) (xy 3.32221 -10.508557) (xy 3.511842 -10.566081) (xy 3.686608 -10.659495) (xy 3.839791 -10.785209)
-        (xy 3.94959 -10.919) (xy 3.976499 -10.919) (xy 4.002141 -10.893358) (xy 4.130058 -10.807887) (xy 4.272191 -10.749013)
-        (xy 4.423078 -10.719) (xy 4.576922 -10.719) (xy 4.727809 -10.749013) (xy 4.869942 -10.807887) (xy 4.997859 -10.893358)
-        (xy 5.106642 -11.002141) (xy 5.192113 -11.130058) (xy 5.250987 -11.272191) (xy 5.281 -11.423078) (xy 5.281 -11.576922)
-        (xy 5.250987 -11.727809) (xy 5.192113 -11.869942) (xy 5.106642 -11.997859) (xy 4.997859 -12.106642) (xy 4.869942 -12.192113)
-        (xy 4.727809 -12.250987) (xy 4.576922 -12.281) (xy 4.423078 -12.281) (xy 4.272191 -12.250987) (xy 4.130058 -12.192113)
-        (xy 4.002141 -12.106642) (xy 3.976499 -12.081) (xy 3.94959 -12.081) (xy 3.839791 -12.214791) (xy 3.686608 -12.340505)
-        (xy 3.511842 -12.433919) (xy 3.32221 -12.491443) (xy 3.235331 -12.5) (xy 3.32221 -12.508557) (xy 3.511842 -12.566081)
-        (xy 3.686608 -12.659495) (xy 3.839791 -12.785209) (xy 3.96172 -12.933779) (xy 4.002141 -12.893358) (xy 4.130058 -12.807887)
-        (xy 4.272191 -12.749013) (xy 4.423078 -12.719) (xy 4.576922 -12.719) (xy 4.727809 -12.749013) (xy 4.869942 -12.807887)
-        (xy 4.997859 -12.893358) (xy 5.106642 -13.002141) (xy 5.192113 -13.130058) (xy 5.250987 -13.272191) (xy 5.281 -13.423078)
-        (xy 5.281 -13.576922) (xy 5.250987 -13.727809) (xy 5.192113 -13.869942) (xy 5.106642 -13.997859) (xy 4.997859 -14.106642)
-        (xy 4.869942 -14.192113) (xy 4.727809 -14.250987) (xy 4.576922 -14.281) (xy 4.423078 -14.281) (xy 4.272191 -14.250987)
-        (xy 4.130058 -14.192113) (xy 4.002141 -14.106642) (xy 3.96172 -14.066221) (xy 3.839791 -14.214791) (xy 3.686608 -14.340505)
-        (xy 3.511842 -14.433919) (xy 3.32221 -14.491443) (xy 3.235331 -14.5) (xy 3.32221 -14.508557) (xy 3.511842 -14.566081)
-        (xy 3.686608 -14.659495) (xy 3.839791 -14.785209) (xy 3.96172 -14.933779) (xy 4.002141 -14.893358) (xy 4.130058 -14.807887)
-        (xy 4.272191 -14.749013) (xy 4.423078 -14.719) (xy 4.576922 -14.719) (xy 4.727809 -14.749013) (xy 4.869942 -14.807887)
-        (xy 4.997859 -14.893358) (xy 5.106642 -15.002141) (xy 5.192113 -15.130058) (xy 5.250987 -15.272191) (xy 5.281 -15.423078)
-        (xy 5.281 -15.576922) (xy 5.250987 -15.727809) (xy 5.192113 -15.869942) (xy 5.106642 -15.997859) (xy 4.997859 -16.106642)
-        (xy 4.869942 -16.192113) (xy 4.727809 -16.250987) (xy 4.576922 -16.281) (xy 4.423078 -16.281) (xy 4.272191 -16.250987)
-        (xy 4.130058 -16.192113) (xy 4.002141 -16.106642) (xy 3.96172 -16.066221) (xy 3.839791 -16.214791) (xy 3.686608 -16.340505)
-        (xy 3.511842 -16.433919) (xy 3.32221 -16.491443) (xy 3.174414 -16.506) (xy 1.825586 -16.506) (xy 1.67779 -16.491443)
-        (xy 1.488158 -16.433919) (xy 1.313392 -16.340505) (xy 1.160209 -16.214791) (xy 1.034495 -16.061608) (xy 0.941081 -15.886842)
-        (xy 0.883557 -15.69721) (xy 0.864133 -15.5) (xy -0.864133 -15.5) (xy -0.883557 -15.69721) (xy -0.941081 -15.886842)
-        (xy -1.034495 -16.061608) (xy -1.160209 -16.214791) (xy -1.313392 -16.340505) (xy -1.488158 -16.433919) (xy -1.67779 -16.491443)
-        (xy -1.825586 -16.506) (xy -3.174414 -16.506) (xy -3.32221 -16.491443) (xy -3.511842 -16.433919) (xy -3.686608 -16.340505)
-        (xy -3.839791 -16.214791) (xy -3.96172 -16.066221) (xy -4.002141 -16.106642) (xy -4.130058 -16.192113) (xy -4.272191 -16.250987)
-        (xy -4.423078 -16.281) (xy -4.576922 -16.281) (xy -4.727809 -16.250987) (xy -4.869942 -16.192113) (xy -4.997859 -16.106642)
-        (xy -5.106642 -15.997859) (xy -5.192113 -15.869942) (xy -5.250987 -15.727809) (xy -5.281 -15.576922) (xy -6.813564 -15.576922)
-        (xy -6.325323 -15.799894) (xy -4.794806 -16.329611) (xy -3.220867 -16.711444) (xy -1.617759 -16.941937) (xy 0 -17.019)
+        (xy 101.617759 83.058063) (xy 103.220867 83.288556) (xy 104.794806 83.670389) (xy 106.325323 84.200106) (xy 107.798557 84.872909)
+        (xy 109.201166 85.682706) (xy 110.520448 86.622162) (xy 111.744455 87.68277) (xy 112.862102 88.854925) (xy 113.863268 90.128011)
+        (xy 114.738886 91.4905) (xy 115.481027 92.930052) (xy 116.082969 94.43363) (xy 116.539261 95.987619) (xy 116.845771 97.577944)
+        (xy 116.999723 99.190203) (xy 116.999723 100.809797) (xy 116.845771 102.422056) (xy 116.539261 104.012381) (xy 116.082969 105.56637)
+        (xy 115.481027 107.069948) (xy 114.738886 108.5095) (xy 113.863268 109.871989) (xy 112.862102 111.145075) (xy 111.744455 112.31723)
+        (xy 110.520448 113.377838) (xy 109.201166 114.317294) (xy 107.798557 115.127091) (xy 106.325323 115.799894) (xy 104.794806 116.329611)
+        (xy 103.220867 116.711444) (xy 101.617759 116.941937) (xy 100 117.019) (xy 98.382241 116.941937) (xy 96.779133 116.711444)
+        (xy 95.205194 116.329611) (xy 93.674677 115.799894) (xy 92.201443 115.127091) (xy 90.798834 114.317294) (xy 89.479552 113.377838)
+        (xy 88.255545 112.31723) (xy 87.137898 111.145075) (xy 86.136732 109.871989) (xy 85.261114 108.5095) (xy 84.518973 107.069948)
+        (xy 83.917031 105.56637) (xy 83.460739 104.012381) (xy 83.154229 102.422056) (xy 83.000277 100.809797) (xy 83.000277 99.844285)
+        (xy 92.419 99.844285) (xy 92.419 100.155715) (xy 92.479757 100.461161) (xy 92.598936 100.748884) (xy 92.771957 101.007829)
+        (xy 92.992171 101.228043) (xy 93.251116 101.401064) (xy 93.538839 101.520243) (xy 93.844285 101.581) (xy 94.155715 101.581)
+        (xy 94.461161 101.520243) (xy 94.748884 101.401064) (xy 95.007829 101.228043) (xy 95.228043 101.007829) (xy 95.401064 100.748884)
+        (xy 95.488945 100.536722) (xy 95.644965 101.321086) (xy 95.986376 102.145327) (xy 96.482029 102.887124) (xy 97.112876 103.517971)
+        (xy 97.854673 104.013624) (xy 98.678914 104.355035) (xy 99.553924 104.529086) (xy 100.446076 104.529086) (xy 101.321086 104.355035)
+        (xy 102.145327 104.013624) (xy 102.887124 103.517971) (xy 103.517971 102.887124) (xy 104.013624 102.145327) (xy 104.355035 101.321086)
+        (xy 104.529086 100.446076) (xy 104.529086 99.553924) (xy 104.355035 98.678914) (xy 104.013624 97.854673) (xy 103.517971 97.112876)
+        (xy 102.887124 96.482029) (xy 102.145327 95.986376) (xy 101.321086 95.644965) (xy 100.446076 95.470914) (xy 99.553924 95.470914)
+        (xy 98.678914 95.644965) (xy 97.854673 95.986376) (xy 97.112876 96.482029) (xy 96.482029 97.112876) (xy 95.986376 97.854673)
+        (xy 95.644965 98.678914) (xy 95.488945 99.463278) (xy 95.401064 99.251116) (xy 95.228043 98.992171) (xy 95.007829 98.771957)
+        (xy 94.748884 98.598936) (xy 94.461161 98.479757) (xy 94.155715 98.419) (xy 93.844285 98.419) (xy 93.538839 98.479757)
+        (xy 93.251116 98.598936) (xy 92.992171 98.771957) (xy 92.771957 98.992171) (xy 92.598936 99.251116) (xy 92.479757 99.538839)
+        (xy 92.419 99.844285) (xy 83.000277 99.844285) (xy 83.000277 99.190203) (xy 83.154229 97.577944) (xy 83.460739 95.987619)
+        (xy 83.917031 94.43363) (xy 84.518973 92.930052) (xy 85.261114 91.4905) (xy 86.136732 90.128011) (xy 87.137898 88.854925)
+        (xy 88.255545 87.68277) (xy 89.479552 86.622162) (xy 90.798834 85.682706) (xy 92.201443 84.872909) (xy 93.186436 84.423078)
+        (xy 94.719 84.423078) (xy 94.719 84.576922) (xy 94.749013 84.727809) (xy 94.807887 84.869942) (xy 94.893358 84.997859)
+        (xy 95.002141 85.106642) (xy 95.130058 85.192113) (xy 95.272191 85.250987) (xy 95.423078 85.281) (xy 95.576922 85.281)
+        (xy 95.727809 85.250987) (xy 95.869942 85.192113) (xy 95.997859 85.106642) (xy 96.03828 85.066221) (xy 96.160209 85.214791)
+        (xy 96.313392 85.340505) (xy 96.488158 85.433919) (xy 96.67779 85.491443) (xy 96.764669 85.5) (xy 96.67779 85.508557)
+        (xy 96.488158 85.566081) (xy 96.313392 85.659495) (xy 96.160209 85.785209) (xy 96.03828 85.933779) (xy 95.997859 85.893358)
+        (xy 95.869942 85.807887) (xy 95.727809 85.749013) (xy 95.576922 85.719) (xy 95.423078 85.719) (xy 95.272191 85.749013)
+        (xy 95.130058 85.807887) (xy 95.002141 85.893358) (xy 94.893358 86.002141) (xy 94.807887 86.130058) (xy 94.749013 86.272191)
+        (xy 94.719 86.423078) (xy 94.719 86.576922) (xy 94.749013 86.727809) (xy 94.807887 86.869942) (xy 94.893358 86.997859)
+        (xy 95.002141 87.106642) (xy 95.130058 87.192113) (xy 95.272191 87.250987) (xy 95.423078 87.281) (xy 95.576922 87.281)
+        (xy 95.727809 87.250987) (xy 95.869942 87.192113) (xy 95.997859 87.106642) (xy 96.03828 87.066221) (xy 96.160209 87.214791)
+        (xy 96.313392 87.340505) (xy 96.488158 87.433919) (xy 96.67779 87.491443) (xy 96.764669 87.5) (xy 96.67779 87.508557)
+        (xy 96.488158 87.566081) (xy 96.313392 87.659495) (xy 96.160209 87.785209) (xy 96.03828 87.933779) (xy 95.997859 87.893358)
+        (xy 95.869942 87.807887) (xy 95.727809 87.749013) (xy 95.576922 87.719) (xy 95.423078 87.719) (xy 95.272191 87.749013)
+        (xy 95.130058 87.807887) (xy 95.002141 87.893358) (xy 94.893358 88.002141) (xy 94.807887 88.130058) (xy 94.749013 88.272191)
+        (xy 94.719 88.423078) (xy 94.719 88.576922) (xy 94.749013 88.727809) (xy 94.807887 88.869942) (xy 94.893358 88.997859)
+        (xy 95.002141 89.106642) (xy 95.130058 89.192113) (xy 95.272191 89.250987) (xy 95.423078 89.281) (xy 95.576922 89.281)
+        (xy 95.727809 89.250987) (xy 95.869942 89.192113) (xy 95.997859 89.106642) (xy 96.03828 89.066221) (xy 96.160209 89.214791)
+        (xy 96.313392 89.340505) (xy 96.488158 89.433919) (xy 96.67779 89.491443) (xy 96.764669 89.5) (xy 96.67779 89.508557)
+        (xy 96.488158 89.566081) (xy 96.313392 89.659495) (xy 96.160209 89.785209) (xy 96.03828 89.933779) (xy 95.997859 89.893358)
+        (xy 95.869942 89.807887) (xy 95.727809 89.749013) (xy 95.576922 89.719) (xy 95.423078 89.719) (xy 95.272191 89.749013)
+        (xy 95.130058 89.807887) (xy 95.002141 89.893358) (xy 94.893358 90.002141) (xy 94.807887 90.130058) (xy 94.749013 90.272191)
+        (xy 94.719 90.423078) (xy 94.719 90.576922) (xy 94.749013 90.727809) (xy 94.807887 90.869942) (xy 94.893358 90.997859)
+        (xy 95.002141 91.106642) (xy 95.130058 91.192113) (xy 95.272191 91.250987) (xy 95.423078 91.281) (xy 95.576922 91.281)
+        (xy 95.727809 91.250987) (xy 95.869942 91.192113) (xy 95.997859 91.106642) (xy 96.03828 91.066221) (xy 96.160209 91.214791)
+        (xy 96.313392 91.340505) (xy 96.488158 91.433919) (xy 96.67779 91.491443) (xy 96.825586 91.506) (xy 98.174414 91.506)
+        (xy 98.32221 91.491443) (xy 98.511842 91.433919) (xy 98.686608 91.340505) (xy 98.839791 91.214791) (xy 98.965505 91.061608)
+        (xy 99.058919 90.886842) (xy 99.090858 90.78155) (xy 100.909203 90.78155) (xy 100.967983 90.953307) (xy 101.073847 91.121547)
+        (xy 101.210499 91.265901) (xy 101.372687 91.380822) (xy 101.554179 91.461894) (xy 101.748 91.506) (xy 102.373 91.506)
+        (xy 102.373 90.627) (xy 102.627 90.627) (xy 102.627 91.506) (xy 103.252 91.506) (xy 103.445821 91.461894)
+        (xy 103.627313 91.380822) (xy 103.789501 91.265901) (xy 103.926153 91.121547) (xy 104.032017 90.953307) (xy 104.090797 90.78155)
+        (xy 104.026852 90.627) (xy 102.627 90.627) (xy 102.373 90.627) (xy 100.973148 90.627) (xy 100.909203 90.78155)
+        (xy 99.090858 90.78155) (xy 99.116443 90.69721) (xy 99.135867 90.5) (xy 99.116443 90.30279) (xy 99.058919 90.113158)
+        (xy 98.965505 89.938392) (xy 98.839791 89.785209) (xy 98.686608 89.659495) (xy 98.511842 89.566081) (xy 98.32221 89.508557)
+        (xy 98.235331 89.5) (xy 98.32221 89.491443) (xy 98.511842 89.433919) (xy 98.686608 89.340505) (xy 98.839791 89.214791)
+        (xy 98.965505 89.061608) (xy 99.058919 88.886842) (xy 99.116443 88.69721) (xy 99.135867 88.5) (xy 99.116443 88.30279)
+        (xy 99.058919 88.113158) (xy 98.965505 87.938392) (xy 98.839791 87.785209) (xy 98.686608 87.659495) (xy 98.511842 87.566081)
+        (xy 98.32221 87.508557) (xy 98.235331 87.5) (xy 98.32221 87.491443) (xy 98.511842 87.433919) (xy 98.686608 87.340505)
+        (xy 98.839791 87.214791) (xy 98.965505 87.061608) (xy 99.058919 86.886842) (xy 99.116443 86.69721) (xy 99.135867 86.5)
+        (xy 99.116443 86.30279) (xy 99.058919 86.113158) (xy 98.965505 85.938392) (xy 98.839791 85.785209) (xy 98.686608 85.659495)
+        (xy 98.511842 85.566081) (xy 98.32221 85.508557) (xy 98.235331 85.5) (xy 98.32221 85.491443) (xy 98.511842 85.433919)
+        (xy 98.686608 85.340505) (xy 98.839791 85.214791) (xy 98.965505 85.061608) (xy 99.058919 84.886842) (xy 99.116443 84.69721)
+        (xy 99.135867 84.5) (xy 100.864133 84.5) (xy 100.883557 84.69721) (xy 100.941081 84.886842) (xy 101.034495 85.061608)
+        (xy 101.160209 85.214791) (xy 101.313392 85.340505) (xy 101.488158 85.433919) (xy 101.67779 85.491443) (xy 101.764669 85.5)
+        (xy 101.67779 85.508557) (xy 101.488158 85.566081) (xy 101.313392 85.659495) (xy 101.160209 85.785209) (xy 101.034495 85.938392)
+        (xy 100.941081 86.113158) (xy 100.883557 86.30279) (xy 100.864133 86.5) (xy 100.883557 86.69721) (xy 100.941081 86.886842)
+        (xy 101.034495 87.061608) (xy 101.160209 87.214791) (xy 101.313392 87.340505) (xy 101.488158 87.433919) (xy 101.67779 87.491443)
+        (xy 101.764669 87.5) (xy 101.67779 87.508557) (xy 101.488158 87.566081) (xy 101.313392 87.659495) (xy 101.160209 87.785209)
+        (xy 101.034495 87.938392) (xy 100.941081 88.113158) (xy 100.883557 88.30279) (xy 100.864133 88.5) (xy 100.883557 88.69721)
+        (xy 100.941081 88.886842) (xy 101.034495 89.061608) (xy 101.160209 89.214791) (xy 101.313392 89.340505) (xy 101.488158 89.433919)
+        (xy 101.67779 89.491443) (xy 101.734633 89.497042) (xy 101.554179 89.538106) (xy 101.372687 89.619178) (xy 101.210499 89.734099)
+        (xy 101.073847 89.878453) (xy 100.967983 90.046693) (xy 100.909203 90.21845) (xy 100.973148 90.373) (xy 102.373 90.373)
+        (xy 102.373 90.353) (xy 102.627 90.353) (xy 102.627 90.373) (xy 104.026852 90.373) (xy 104.090797 90.21845)
+        (xy 104.032017 90.046693) (xy 103.926153 89.878453) (xy 103.789501 89.734099) (xy 103.627313 89.619178) (xy 103.445821 89.538106)
+        (xy 103.265367 89.497042) (xy 103.32221 89.491443) (xy 103.511842 89.433919) (xy 103.686608 89.340505) (xy 103.839791 89.214791)
+        (xy 103.94959 89.081) (xy 103.976499 89.081) (xy 104.002141 89.106642) (xy 104.130058 89.192113) (xy 104.272191 89.250987)
+        (xy 104.423078 89.281) (xy 104.576922 89.281) (xy 104.727809 89.250987) (xy 104.869942 89.192113) (xy 104.997859 89.106642)
+        (xy 105.106642 88.997859) (xy 105.192113 88.869942) (xy 105.250987 88.727809) (xy 105.281 88.576922) (xy 105.281 88.423078)
+        (xy 105.250987 88.272191) (xy 105.192113 88.130058) (xy 105.106642 88.002141) (xy 104.997859 87.893358) (xy 104.869942 87.807887)
+        (xy 104.727809 87.749013) (xy 104.576922 87.719) (xy 104.423078 87.719) (xy 104.272191 87.749013) (xy 104.130058 87.807887)
+        (xy 104.002141 87.893358) (xy 103.976499 87.919) (xy 103.94959 87.919) (xy 103.839791 87.785209) (xy 103.686608 87.659495)
+        (xy 103.511842 87.566081) (xy 103.32221 87.508557) (xy 103.235331 87.5) (xy 103.32221 87.491443) (xy 103.511842 87.433919)
+        (xy 103.686608 87.340505) (xy 103.839791 87.214791) (xy 103.96172 87.066221) (xy 104.002141 87.106642) (xy 104.130058 87.192113)
+        (xy 104.272191 87.250987) (xy 104.423078 87.281) (xy 104.576922 87.281) (xy 104.727809 87.250987) (xy 104.869942 87.192113)
+        (xy 104.997859 87.106642) (xy 105.106642 86.997859) (xy 105.192113 86.869942) (xy 105.250987 86.727809) (xy 105.281 86.576922)
+        (xy 105.281 86.423078) (xy 105.250987 86.272191) (xy 105.192113 86.130058) (xy 105.106642 86.002141) (xy 104.997859 85.893358)
+        (xy 104.869942 85.807887) (xy 104.727809 85.749013) (xy 104.576922 85.719) (xy 104.423078 85.719) (xy 104.272191 85.749013)
+        (xy 104.130058 85.807887) (xy 104.002141 85.893358) (xy 103.96172 85.933779) (xy 103.839791 85.785209) (xy 103.686608 85.659495)
+        (xy 103.511842 85.566081) (xy 103.32221 85.508557) (xy 103.235331 85.5) (xy 103.32221 85.491443) (xy 103.511842 85.433919)
+        (xy 103.686608 85.340505) (xy 103.839791 85.214791) (xy 103.96172 85.066221) (xy 104.002141 85.106642) (xy 104.130058 85.192113)
+        (xy 104.272191 85.250987) (xy 104.423078 85.281) (xy 104.576922 85.281) (xy 104.727809 85.250987) (xy 104.869942 85.192113)
+        (xy 104.997859 85.106642) (xy 105.106642 84.997859) (xy 105.192113 84.869942) (xy 105.250987 84.727809) (xy 105.281 84.576922)
+        (xy 105.281 84.423078) (xy 105.250987 84.272191) (xy 105.192113 84.130058) (xy 105.106642 84.002141) (xy 104.997859 83.893358)
+        (xy 104.869942 83.807887) (xy 104.727809 83.749013) (xy 104.576922 83.719) (xy 104.423078 83.719) (xy 104.272191 83.749013)
+        (xy 104.130058 83.807887) (xy 104.002141 83.893358) (xy 103.96172 83.933779) (xy 103.839791 83.785209) (xy 103.686608 83.659495)
+        (xy 103.511842 83.566081) (xy 103.32221 83.508557) (xy 103.174414 83.494) (xy 101.825586 83.494) (xy 101.67779 83.508557)
+        (xy 101.488158 83.566081) (xy 101.313392 83.659495) (xy 101.160209 83.785209) (xy 101.034495 83.938392) (xy 100.941081 84.113158)
+        (xy 100.883557 84.30279) (xy 100.864133 84.5) (xy 99.135867 84.5) (xy 99.116443 84.30279) (xy 99.058919 84.113158)
+        (xy 98.965505 83.938392) (xy 98.839791 83.785209) (xy 98.686608 83.659495) (xy 98.511842 83.566081) (xy 98.32221 83.508557)
+        (xy 98.174414 83.494) (xy 96.825586 83.494) (xy 96.67779 83.508557) (xy 96.488158 83.566081) (xy 96.313392 83.659495)
+        (xy 96.160209 83.785209) (xy 96.03828 83.933779) (xy 95.997859 83.893358) (xy 95.869942 83.807887) (xy 95.727809 83.749013)
+        (xy 95.576922 83.719) (xy 95.423078 83.719) (xy 95.272191 83.749013) (xy 95.130058 83.807887) (xy 95.002141 83.893358)
+        (xy 94.893358 84.002141) (xy 94.807887 84.130058) (xy 94.749013 84.272191) (xy 94.719 84.423078) (xy 93.186436 84.423078)
+        (xy 93.674677 84.200106) (xy 95.205194 83.670389) (xy 96.779133 83.288556) (xy 98.382241 83.058063) (xy 100 82.981)
       )
     )
   )

BIN
scripts/RobotoMono-Bold.ttf


+ 16 - 0
scripts/annotate_image.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+FONT="$DIR/RobotoMono-Bold.ttf"
+
+# Make sure font exists
+ls "$FONT"
+
+set -v
+
+LABEL="`date --rfc-3339=seconds`\n`git rev-parse --short HEAD`"
+convert -background black -fill white -pointsize 12 -font "$FONT" -size 300x36 label:"$LABEL" -bordercolor black -border 3 $1 +swap -append $1
+

+ 0 - 0
util/__init__.py


+ 14 - 0
util/file_util.py

@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import errno
+import os
+
+def mkdir_p(path):
+    try:
+        os.makedirs(path)
+    except OSError as exc:  # Python >2.5
+        if exc.errno == errno.EEXIST and os.path.isdir(path):
+            pass
+        else:
+            raise
+

+ 32 - 0
util/rev_info.py

@@ -0,0 +1,32 @@
+import datetime
+import subprocess
+
+def git_short_rev():
+    try:
+        return subprocess.check_output([
+            'git',
+            'rev-parse',
+            '--short',
+            'HEAD',
+        ]).decode('utf-8').strip()
+    except Exception:
+        raise RuntimeError("Could not read git revision. Make sure you have git installed and you're working with a git clone of the repository.")
+
+def current_date():
+    return datetime.date.today().strftime('%Y-%m-%d')
+
+def git_date(short=True):
+    try:
+        iso = subprocess.check_output([
+            'git',
+            'log',
+            '-1',
+            '--format=%ci',
+            'HEAD',
+        ]).decode('utf-8').strip()
+        if short:
+            return iso.split(' ')[0]
+        else:
+            return iso
+    except Exception:
+        raise RuntimeError("Could not read git commit date. Make sure you have git installed and you're working with a git clone of the repository.")

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä