diff --git a/doc/images/controller-internals-diagram.graffle b/doc/images/controller-internals-diagram.graffle new file mode 100644 index 0000000000000000000000000000000000000000..c8be889ff8256d11e1ada139707bc79776c0a060 --- /dev/null +++ b/doc/images/controller-internals-diagram.graffle @@ -0,0 +1,2168 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle.MacAppStore</string> + <string>139.18</string> + </array> + <key>AutoAdjust</key> + <false/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {600, 510}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HelveticaNeue</string> + <key>Size</key> + <real>14</real> + </dict> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>CanvasSize</key> + <string>{600, 510}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>0.0</real> + <key>CreationDate</key> + <string>2013-11-13 01:15:56 +0000</string> + <key>Creator</key> + <string>Micah Elizabeth Scott</string> + <key>DisplayScale</key> + <string>1 pt = 1 px</string> + <key>GraphDocumentVersion</key> + <integer>8</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3814</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3876</integer> + <key>Points</key> + <array> + <string>{105.87867736816406, 56.4853515625}</string> + <string>{105.87867736816406, 127.47792816162109}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3875</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{55.092720031738281, 22.485336303710938}, {101.57191467285156, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3875</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 fcserver}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3873</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3874</integer> + <key>Points</key> + <array> + <string>{489.65349578857422, 395.97787475585938}</string> + <string>{489.65349578857422, 453.5146484375}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3870</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{438.86753845214844, 453.5146484375}, {101.57191467285156, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3873</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 LEDs}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3870</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3872</integer> + <key>Points</key> + <array> + <string>{489.65346527099609, 339.51466369628906}</string> + <string>{489.65349578857422, 361.97785949707031}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3851</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{438.86753845214844, 361.97785949707031}, {101.57191467285156, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3870</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Output Buffer}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{495.44357299804688, 273.01463317871094}, {27, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3853</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 DMA}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3851</integer> + </dict> + <key>ID</key> + <integer>3852</integer> + <key>Points</key> + <array> + <string>{489.65345764160156, 240.0513841311149}</string> + <string>{489.65346527099609, 305.5146484375}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3846</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{438.86750793457031, 305.5146484375}, {101.57191467285156, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3851</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 OctoWS2811z}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3845</integer> + </dict> + <key>ID</key> + <integer>3850</integer> + <key>Points</key> + <array> + <string>{400.91958618164062, 181.51465606689453}</string> + <string>{447.15345764160156, 181.05140701929849}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3848</integer> + <key>Info</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3848</integer> + </dict> + <key>ID</key> + <integer>3849</integer> + <key>Points</key> + <array> + <string>{360.41960144042969, 232.2646484375}</string> + <string>{360.41958618164062, 198.51466369628906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3837</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{319.91958618164062, 164.5146484375}, {81, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3848</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Pack Pixels}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{367.44357299804688, 211.38965606689453}, {31, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3847</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 24-bit}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{447.15345764160156, 206.05136887232584}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3846</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Frame N}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{447.15345764160156, 164.05139938990396}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3845</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Frame N-1}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{424.44357299804688, 131.5146484375}, {130.41984558105469, 122.99999237060547}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3844</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 WS2811 Buffer Pool}</string> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{367.44357299804688, 281.51467132568359}, {31, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3843</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 48-bit}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3839</integer> + </dict> + <key>ID</key> + <integer>3842</integer> + <key>Points</key> + <array> + <string>{319.91960144042969, 243.59798415501791}</string> + <string>{284.85470581054688, 243.59798922141499}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3837</integer> + <key>Info</key> + <integer>8</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3837</integer> + </dict> + <key>ID</key> + <integer>3841</integer> + <key>Points</key> + <array> + <string>{284.85470581054688, 254.93132696549173}</string> + <string>{319.91960144042969, 254.93132696549173}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3839</integer> + <key>Info</key> + <integer>4</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3837</integer> + </dict> + <key>ID</key> + <integer>3840</integer> + <key>Points</key> + <array> + <string>{360.41960144042969, 305.5146484375}</string> + <string>{360.41960144042969, 266.26466369628906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3833</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{199.85470581054688, 232.2646484375}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3839</integer> + <key>Magnets</key> + <array> + <string>{-0.42163697454145854, -1.2649110555648804}</string> + <string>{0.42163710648196329, -1.2649110555648804}</string> + <string>{1.2649110555648793, -0.4216368426009538}</string> + <string>{1.2649110555648793, 0.42163714417925036}</string> + <string>{0.42163699339010208, 1.2649110555648804}</string> + <string>{-0.42163733062650977, 1.2649109363555908}</string> + <string>{-1.2649110555648804, 0.42163676720637966}</string> + <string>{-1.2649109363555908, -0.4216371798373757}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Residual\ +Buffer}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{319.91960144042969, 232.2646484375}, {81, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3837</integer> + <key>Magnets</key> + <array> + <string>{0, -0.5}</string> + <string>{0.25, 0}</string> + <string>{1.2649110555648793, -0.4216368426009538}</string> + <string>{1.2649110555648793, 0.42163714417925036}</string> + <string>{0.42163699339010097, 1.2649110555648804}</string> + <string>{0, 0.5}</string> + <string>{-0.5, 0.16666671633720398}</string> + <string>{-1.2649109363555908, -0.4216371798373757}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Dither}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3833</integer> + <key>Info</key> + <integer>8</integer> + </dict> + <key>ID</key> + <integer>3836</integer> + <key>Points</key> + <array> + <string>{148.37867736816406, 257.26468658447266}</string> + <string>{201.89772033691409, 284.5146484375}</string> + <string>{292.44357299804688, 290.5146484375}</string> + <string>{319.91960144042969, 316.84798415501791}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3818</integer> + <key>Info</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3833</integer> + </dict> + <key>ID</key> + <integer>3835</integer> + <key>Points</key> + <array> + <string>{271.96755981445312, 328.18132696549173}</string> + <string>{319.91960144042969, 328.18132189909466}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3829</integer> + <key>Info</key> + <integer>4</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{280.44357299804688, 334.2646484375}, {31, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3834</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 48-bit}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{319.91960144042969, 305.5146484375}, {81, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3833</integer> + <key>Magnets</key> + <array> + <string>{0, -0.5}</string> + <string>{0.5, 0.5}</string> + <string>{1.2649110555648793, -0.4216368426009538}</string> + <string>{1.2649110555648793, 0.42163714417925036}</string> + <string>{0.42163699339010097, 1.2649110555648804}</string> + <string>{-0.42163733062651088, 1.2649109363555908}</string> + <string>{-1.2649110555648804, 0.42163676720637966}</string> + <string>{-1.2649109363555908, -0.4216371798373757}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Lookup}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3829</integer> + <key>Info</key> + <integer>7</integer> + </dict> + <key>ID</key> + <integer>3831</integer> + <key>Points</key> + <array> + <string>{148.37867736816406, 341.26462554931641}</string> + <string>{190.96755981445312, 328.18132189909466}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3820</integer> + <key>Info</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3829</integer> + </dict> + <key>ID</key> + <integer>3830</integer> + <key>Points</key> + <array> + <string>{148.37867736816406, 299.26465606689453}</string> + <string>{190.96755981445312, 316.84798415501791}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3819</integer> + <key>Info</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{190.96755981445312, 305.5146484375}, {81, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3829</integer> + <key>Magnets</key> + <array> + <string>{-0.42163697454145965, -1.2649110555648804}</string> + <string>{0.42163710648196218, -1.2649110555648804}</string> + <string>{0.5, 0}</string> + <string>{1.2649110555648793, 0.42163714417925036}</string> + <string>{0.42163699339010097, 1.2649110555648804}</string> + <string>{-0.42163733062651088, 1.2649109363555908}</string> + <string>{-1.2649110555648804, 0.42163676720637966}</string> + <string>{-1.2649109363555908, -0.4216371798373757}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Interpolate}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{113.01319885253906, 67.691204071044922}, {71, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3828</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 12 Mb/s USB}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{113.01319885253906, 176.51465606689453}, {27, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>3827</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 DMA}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3815</integer> + </dict> + <key>ID</key> + <integer>3826</integer> + <key>Points</key> + <array> + <string>{105.87867736816406, 161.47794342041016}</string> + <string>{105.87867736816406, 207.26467895507812}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3814</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{63.378677368164062, 324.26461791992188}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3820</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Frame N}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{63.378677368164062, 282.2646484375}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3819</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Frame N-1}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{63.378677368164062, 240.26467895507812}, {85, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3818</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>90</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>0.793692</string> + <key>g</key> + <string>0.601833</string> + <key>r</key> + <string>0.49645</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Color LUT}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.023727416992188, 207.26467895507812}, {123.70989990234375, 170}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3815</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 USB Buffer Pool}</string> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{45.434860229492188, 127.47792816162109}, {120.88763427734375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3814</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 USB Driver}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{25.443572998046875, 93.5146484375}, {549.11285400390625, 327.17660522460938}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3812</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{0.11189607482328179, -0.12520684509157687}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.763023</string> + <key>g</key> + <string>0.773356</string> + <key>r</key> + <string>0.693833</string> + </dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>257</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>1</string> + <key>r</key> + <string>1</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.4</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>8.8266611099243164</real> + <key>ShadowVector</key> + <string>{1, 2}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs24 \cf0 Fadecandy Controller +\b0 \ +(48 MHz ARM Cortex-M4)}</string> + <key>VerticalPad</key> + <integer>10</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>2</integer> + <key>ImageCounter</key> + <integer>5</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>Layer 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2014-02-24 22:08:52 +0000</string> + <key>Modifier</key> + <string>Micah Elizabeth Scott</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{612, 792}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>int</string> + <string>0</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>Canvas 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array> + <dict> + <key>name</key> + <string>Canvas 1</string> + </dict> + </array> + <key>Frame</key> + <string>{{260, -47}, {1125, 862}}</string> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{-195, -106}, {990, 723}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>Canvas 1</string> + <real>1</real> + <real>0.5</real> + </array> + </array> + </dict> +</dict> +</plist> diff --git a/doc/images/controller-internals-diagram.png b/doc/images/controller-internals-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfb882ddf25ffa8fb4ababafa958ac11d86cff9 Binary files /dev/null and b/doc/images/controller-internals-diagram.png differ diff --git a/doc/images/controller-internals-diagram@2x.png b/doc/images/controller-internals-diagram@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad038f70e29eba6df176763774a03119a64e0eb Binary files /dev/null and b/doc/images/controller-internals-diagram@2x.png differ diff --git a/doc/images/host-internals-diagram.graffle b/doc/images/host-internals-diagram.graffle new file mode 100644 index 0000000000000000000000000000000000000000..b28ac6619eeca021832d4487727be9f5ab3c7ad9 --- /dev/null +++ b/doc/images/host-internals-diagram.graffle @@ -0,0 +1,1833 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle.MacAppStore</string> + <string>139.18</string> + </array> + <key>AutoAdjust</key> + <false/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {460, 590}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HelveticaNeue</string> + <key>Size</key> + <real>14</real> + </dict> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>CanvasSize</key> + <string>{460, 590}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>0.0</real> + <key>CreationDate</key> + <string>2013-11-13 01:15:56 +0000</string> + <key>Creator</key> + <string>Micah Elizabeth Scott</string> + <key>DisplayScale</key> + <string>1 pt = 1 px</string> + <key>GraphDocumentVersion</key> + <integer>8</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3910</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3913</integer> + <key>Points</key> + <array> + <string>{271.99996089935297, 495.00001525878901}</string> + <string>{278.3881546669279, 523.96369171142578}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3812</integer> + <key>Info</key> + <integer>10</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3909</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3912</integer> + <key>Points</key> + <array> + <string>{189.99991691112524, 495.00001525878901}</string> + <string>{190.96731726458412, 523.00000762939453}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3812</integer> + <key>Info</key> + <integer>11</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3908</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3911</integer> + <key>Points</key> + <array> + <string>{107.99999511241924, 495.00001525878901}</string> + <string>{103.54647986224037, 523.96366119384766}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3812</integer> + <key>Info</key> + <integer>12</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{238.35546875, 523.96369171142578}, {80.06536865234375, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3910</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Enttec DMX\ +Adaptor}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{150.93463134765625, 523.00000762939453}, {80.06536865234375, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3909</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Fadecandy Controller}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{63.5137939453125, 523.96366119384766}, {80.06536865234375, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3908</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Fadecandy Controller}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.467315673828125, 445.00001525878906}, {373.9530029296875, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3907</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 libusbx}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{320.2144660949707, 406}, {26.645050048828125, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3906</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 ...}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{218.39334106445312, 406.00001525878906}, {95.106500654078246, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3905</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DMX Device}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{131.61334228515625, 406.00001525878906}, {80.06536865234375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3904</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Fc Device}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.833343505859375, 406.00001525878906}, {80.06536865234375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3903</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Fc Device}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3898</integer> + <key>Info</key> + <integer>3</integer> + </dict> + <key>ID</key> + <integer>3902</integer> + <key>Points</key> + <array> + <string>{251.59175498398514, 294.17665863037109}</string> + <string>{248, 322.00003433227539}</string> + <string>{230.03256200016494, 367.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3877</integer> + <key>Info</key> + <integer>5</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3892</integer> + <key>Info</key> + <integer>3</integer> + </dict> + <key>ID</key> + <integer>3901</integer> + <key>Points</key> + <array> + <string>{211.29586127969748, 294.17665863037109}</string> + <string>{199, 317.00001525878906}</string> + <string>{165.72097778320312, 345.00002288818359}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3877</integer> + <key>Info</key> + <integer>6</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3892</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>3899</integer> + <key>Points</key> + <array> + <string>{104.9111328125, 294.17664337158203}</string> + <string>{105.27716064453125, 328.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3875</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.467315673828125, 367.00001525878906}, {247.42031860351562, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3898</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Device Management & Hotplug}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3876</integer> + <key>Info</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>3897</integer> + <key>Points</key> + <array> + <string>{357.97650146484375, 318.78635025024414}</string> + <string>{357.97650146484375, 294.17666625976562}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3896</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{310.42324829101562, 319.03635025024414}, {95.106500654078246, 51.92730712890625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3896</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Built-in\ +HTML5 UI}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.833343505859375, 328.00001525878906}, {120.88763427734375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3892</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Mapping Layer}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3812</integer> + <key>Info</key> + <integer>4</integer> + </dict> + <key>ID</key> + <integer>3891</integer> + <key>Points</key> + <array> + <string>{367.13199615478516, 139.03636169433594}</string> + <string>{353.99999266862869, 168.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3879</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3812</integer> + </dict> + <key>ID</key> + <integer>3890</integer> + <key>Points</key> + <array> + <string>{283.67736816406159, 67.036383749354798}</string> + <string>{272.00000977516174, 168.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3880</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3812</integer> + </dict> + <key>ID</key> + <integer>3889</integer> + <key>Points</key> + <array> + <string>{178.80056478016411, 144.50002300869318}</string> + <string>{189.99999633431435, 168.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3878</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3812</integer> + <key>Info</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>3885</integer> + <key>Points</key> + <array> + <string>{105.27716064453125, 77.963663693341857}</string> + <string>{107.99999816715717, 168.00001525878906}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3465</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{206.56982421874909, 24.000030517578125}, {154.215087890625, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3880</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>1.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Browser UI}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{309, 87.109054565429688}, {116.26399230957031, 51.92730712890625}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3879</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>1.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Processing}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{131.247314453125, 101.4636697769165}, {95.106500654078246, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3878</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>1.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Python}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{171, 260.17664337158203}, {120.88763427734375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3877</integer> + <key>Magnets</key> + <array> + <string>{-0.42163697454145799, -1.2649110555648804}</string> + <string>{0.4216371064819644, -1.2649110555648804}</string> + <string>{1.2649110555648815, -0.4216368426009538}</string> + <string>{1.2649110555648815, 0.42163714417925036}</string> + <string>{0.42163699339010319, 1.2649110555648804}</string> + <string>{-0.42163733062650921, 1.2649109363555908}</string> + <string>{-1.2649110555648797, 0.42163676720637966}</string> + <string>{-1.2649109363555902, -0.4216371798373757}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 WebSockets}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{297.53268432617188, 260.17665100097656}, {120.88763427734375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3876</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 HTTP}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.467315673828125, 260.17662811279297}, {120.88763427734375, 34.000015258789062}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3875</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Open Pixel Control}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{44.467315673828125, 226}, {373.9530029296875, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3814</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.26344959039170046, -0.5}</string> + <string>{0.2924890473753311, -0.5}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 TCP Server}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{26, 168.00001525878906}, {410, 327}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3812</integer> + <key>Magnets</key> + <array> + <string>{-0.68599434921137004, -1.1433238983154295}</string> + <string>{-0.26148819877101559, -1.3074408769607542}</string> + <string>{0.26148823773579011, -1.3074408769607542}</string> + <string>{0.68599429810080892, -1.1433238983154295}</string> + <string>{1.1433238983154295, -0.68599422995339354}</string> + <string>{1.3074408769607542, -0.26148815980624052}</string> + <string>{1.3074408769607542, 0.26148808187669259}</string> + <string>{1.1433237791061399, 0.68599443101746316}</string> + <string>{0.68599436624822374, 1.1433238983154301}</string> + <string>{0.26148792601759396, 1.3074408769607551}</string> + <string>{-0.2614886814711781, 1.3074407577514655}</string> + <string>{-0.68599436624822374, 1.1433238983154301}</string> + <string>{-1.1433241367340088, 0.68599396411994518}</string> + <string>{-1.3074408769607544, 0.26148808187669259}</string> + <string>{-1.3074407577514648, -0.26148852561209368}</string> + <string>{-1.1433238983154297, -0.68599422995339354}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.763023</string> + <key>g</key> + <string>0.773356</string> + <key>r</key> + <string>0.693833</string> + </dict> + <key>FillType</key> + <integer>2</integer> + <key>GradientAngle</key> + <real>257</real> + <key>GradientColor</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>1</string> + <key>r</key> + <string>1</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.4</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>8.8266611099243164</real> + <key>ShadowVector</key> + <string>{1, 2}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>0.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs24 \cf0 Fadecandy Server +\b0 \ +(C++, Windows / Linux / Mac / Embedded)}</string> + <key>VerticalPad</key> + <integer>10</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{37.6236572265625, 34.927310461565185}, {135.3070068359375, 43.036353231776665}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3465</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <string>0.47</string> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Fuzziness</key> + <real>2.69637131690979</real> + <key>ShadowVector</key> + <string>{1, 1}</string> + </dict> + <key>stroke</key> + <dict> + <key>Width</key> + <real>1.5</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Node.js}</string> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>1</integer> + <key>ImageCounter</key> + <integer>5</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>Layer 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2014-02-24 22:30:20 +0000</string> + <key>Modifier</key> + <string>Micah Elizabeth Scott</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{612, 792}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>int</string> + <string>0</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>Canvas 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array> + <dict> + <key>name</key> + <string>Canvas 1</string> + </dict> + </array> + <key>Frame</key> + <string>{{397, 14}, {1125, 862}}</string> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{-265, -66}, {990, 723}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>Canvas 1</string> + <real>1</real> + <real>0.5</real> + </array> + </array> + </dict> +</dict> +</plist> diff --git a/doc/images/host-internals-diagram.png b/doc/images/host-internals-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..603e7fce467cff1ae97e5556339239c35ae6faf9 Binary files /dev/null and b/doc/images/host-internals-diagram.png differ diff --git a/doc/images/host-internals-diagram@2x.png b/doc/images/host-internals-diagram@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..de3cb8c9f776b4fe13785068b1457556d4e0cd36 Binary files /dev/null and b/doc/images/host-internals-diagram@2x.png differ