From 22186ed133117d33497d5ff3d7793bf0e5976ad4 Mon Sep 17 00:00:00 2001
From: Pedro Gonnet <pedro.gonnet@durham.ac.uk>
Date: Fri, 1 Nov 2013 16:20:52 +0000
Subject: [PATCH] new figures and backup.

---
 paper/figures/BH_scaling.eps |  408 +++++++++++++
 paper/figures/BH_scaling.pdf |  Bin 0 -> 8433 bytes
 paper/figures/CellParts.pdf  |  Bin 0 -> 7603 bytes
 paper/figures/CellParts.svg  | 1095 ++++++++++++++++++++++++++++++++++
 paper/figures/QR_scaling.eps |  412 +++++++++++++
 paper/figures/QR_scaling.pdf |  Bin 0 -> 8319 bytes
 paper/paper.tex              |  403 ++++++++++++-
 paper/quicksched.bib         |   42 ++
 8 files changed, 2354 insertions(+), 6 deletions(-)
 create mode 100644 paper/figures/BH_scaling.eps
 create mode 100644 paper/figures/BH_scaling.pdf
 create mode 100644 paper/figures/CellParts.pdf
 create mode 100644 paper/figures/CellParts.svg
 create mode 100644 paper/figures/QR_scaling.eps
 create mode 100644 paper/figures/QR_scaling.pdf

diff --git a/paper/figures/BH_scaling.eps b/paper/figures/BH_scaling.eps
new file mode 100644
index 0000000..9681494
--- /dev/null
+++ b/paper/figures/BH_scaling.eps
@@ -0,0 +1,408 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: MATLAB, The MathWorks, Inc. Version 8.0.0.783 (R2012b). Operating System: Linux 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64.
+%%Title: figures/BH_scaling.eps
+%%CreationDate: 11/01/2013  17:10:24
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox:    25    16   788   297
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s {show newpath} bdef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile 
+  3 index 0 eq {/ASCIIHexDecode filter}
+  {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
+  ifelse exch readstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:    25    16   788   297
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0192 3636 csm
+
+  114    65  9156  3375 rc
+85 dict begin %Colortable dictionary
+/c0 { 0.000000 0.000000 0.000000 sr} bdef
+/c1 { 1.000000 1.000000 1.000000 sr} bdef
+/c2 { 0.900000 0.000000 0.000000 sr} bdef
+/c3 { 0.000000 0.820000 0.000000 sr} bdef
+/c4 { 0.000000 0.000000 0.800000 sr} bdef
+/c5 { 0.910000 0.820000 0.320000 sr} bdef
+/c6 { 1.000000 0.260000 0.820000 sr} bdef
+/c7 { 0.000000 0.820000 0.820000 sr} bdef
+c0
+1 j
+1 sg
+   0    0 9404 3445 rf
+6 w
+0 2756 2821 0 0 -2756 282 3100 4 MP
+PP
+-2821 0 0 2756 2821 0 0 -2756 282 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+ 282 3100 mt 3103 3100 L
+ 282 3100 mt  282  344 L
+ 685 3100 mt  685 3071 L
+ 685  344 mt  685  372 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 619 3245 mt 
+(10) s
+1132 3100 mt 1132 3071 L
+1132  344 mt 1132  372 L
+1066 3245 mt 
+(20) s
+1580 3100 mt 1580 3071 L
+1580  344 mt 1580  372 L
+1514 3245 mt 
+(30) s
+2028 3100 mt 2028 3071 L
+2028  344 mt 2028  372 L
+1962 3245 mt 
+(40) s
+2476 3100 mt 2476 3071 L
+2476  344 mt 2476  372 L
+2410 3245 mt 
+(50) s
+2923 3100 mt 2923 3071 L
+2923  344 mt 2923  372 L
+2857 3245 mt 
+(60) s
+ 282 2706 mt  310 2706 L
+3103 2706 mt 3074 2706 L
+ 114 2750 mt 
+(10) s
+ 282 2268 mt  310 2268 L
+3103 2268 mt 3074 2268 L
+ 114 2312 mt 
+(20) s
+ 282 1831 mt  310 1831 L
+3103 1831 mt 3074 1831 L
+ 114 1875 mt 
+(30) s
+ 282 1393 mt  310 1393 L
+3103 1393 mt 3074 1393 L
+ 114 1437 mt 
+(40) s
+ 282  956 mt  310  956 L
+3103  956 mt 3074  956 L
+ 114 1000 mt 
+(50) s
+ 282  518 mt  310  518 L
+3103  518 mt 3074  518 L
+ 114  562 mt 
+(60) s
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+gs 282 344 2822 2757 rc
+24 w
+45 122 45 -42 45 -15 45 46 44 -76 45 108 45 -21 45 -65 
+44 40 45 -4 45 -41 45 24 45 -10 44 5 45 0 45 -17 
+45 6 44 -58 45 36 45 -29 45 26 45 -39 44 8 45 -44 
+45 -12 45 5 44 -34 45 -10 45 -18 45 -12 45 -22 44 -60 
+45 2 45 -39 45 -18 44 -52 45 -26 45 -38 45 -39 45 -41 
+44 -37 45 -38 45 -36 45 -40 44 -41 45 -41 45 -42 45 -42 
+45 -39 44 -40 45 -42 45 -42 45 -43 44 -42 45 -41 45 -41 
+45 -43 45 -42 44 -43 45 -43 45 -42 45 -43 44 -44 282 3100 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+2568 1516 mt 
+(3539ms) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1464 3388 mt 
+(nr. cores) s
+gs 282 344 2822 2757 rc
+DO
+16.8 w
+2821 -2756 282 3100 2 MP stroke
+gr
+
+16.8 w
+DO
+1115  249 mt 
+(Speedup Barnes-Hut) s
+SO
+6 w
+1 sg
+0 2757 5642 0 0 -2757 3573 3100 4 MP
+PP
+-5642 0 0 2757 5642 0 0 -2757 3573 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+3573 3100 mt 9215 3100 L
+3573 3100 mt 3573  343 L
+4379 3100 mt 4379 3043 L
+4379  344 mt 4379  400 L
+4313 3245 mt 
+(10) s
+5274 3100 mt 5274 3043 L
+5274  344 mt 5274  400 L
+5208 3245 mt 
+(20) s
+6170 3100 mt 6170 3043 L
+6170  344 mt 6170  400 L
+6104 3245 mt 
+(30) s
+7065 3100 mt 7065 3043 L
+7065  344 mt 7065  400 L
+6999 3245 mt 
+(40) s
+7961 3100 mt 7961 3043 L
+7961  344 mt 7961  400 L
+7895 3245 mt 
+(50) s
+8856 3100 mt 8856 3043 L
+8856  344 mt 8856  400 L
+8790 3245 mt 
+(60) s
+3573 3100 mt 3629 3100 L
+9215 3100 mt 9158 3100 L
+3472 3144 mt 
+(0) s
+3573 2598 mt 3629 2598 L
+9215 2598 mt 9158 2598 L
+3372 2642 mt 
+(0.2) s
+3573 2097 mt 3629 2097 L
+9215 2097 mt 9158 2097 L
+3372 2141 mt 
+(0.4) s
+3573 1596 mt 3629 1596 L
+9215 1596 mt 9158 1596 L
+3372 1640 mt 
+(0.6) s
+3573 1095 mt 3629 1095 L
+9215 1095 mt 9158 1095 L
+3372 1139 mt 
+(0.8) s
+3573  594 mt 3629  594 L
+9215  594 mt 9158  594 L
+3472  638 mt 
+(1) s
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+gs 3573 344 5643 2757 rc
+24 w
+90 132 90 -17 89 9 90 68 89 -48 90 130 89 7 90 -38 
+89 69 90 26 90 -14 89 58 90 21 89 40 90 36 89 16 
+90 45 89 -32 90 87 90 4 89 79 90 -6 89 58 90 -12 
+89 34 90 62 89 3 90 43 90 33 89 43 90 30 89 -37 
+90 75 89 3 90 43 89 -22 90 30 90 6 89 5 90 2 
+89 11 90 8 89 15 90 5 89 5 90 2 90 1 89 -2 
+90 14 89 8 90 3 89 4 90 -3 89 -2 90 11 90 15 
+89 -1 90 5 89 7 90 -3 89 11 90 9 89 19 3573 594 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+8909 1650 mt 
+(52%) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6166 3388 mt 
+(nr. cores) s
+gs 3573 344 5643 2757 rc
+DO
+16.8 w
+5642 0 3573 594 2 MP stroke
+gr
+
+16.8 w
+DO
+5586  249 mt 
+(Parallel Efficiency Barnes-Hut) s
+SO
+6 w
+
+end %%Color Dict
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
diff --git a/paper/figures/BH_scaling.pdf b/paper/figures/BH_scaling.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..154f7c0c06b58461c4ffcbe1e29b9e240f4f22a3
GIT binary patch
literal 8433
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
WOA?Dpz>#KdX<@*ns_N?R#svV>KxjVz

literal 0
HcmV?d00001

diff --git a/paper/figures/CellParts.pdf b/paper/figures/CellParts.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6d2b58b44648d95cb4410ca24287208baf9587cb
GIT binary patch
literal 7603
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
E07h@z>Hq)$

literal 0
HcmV?d00001

diff --git a/paper/figures/CellParts.svg b/paper/figures/CellParts.svg
new file mode 100644
index 0000000..78a4e82
--- /dev/null
+++ b/paper/figures/CellParts.svg
@@ -0,0 +1,1095 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg10294"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="CellParts.svg">
+  <defs
+     id="defs10296">
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         id="path3851"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3854"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="429.34598"
+     inkscape:cy="449.53119"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1280"
+     inkscape:window-height="753"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid10302"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata10299">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 210,692.36218 360,0 0,20"
+       id="path11220"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11222"
+       d="m 270,688.36218 340,0 0,24"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 330,696.36218 320,0 0,16"
+       id="path11224"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11226"
+       d="m 390,684.36218 290,0 0,28"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11136"
+       d="m 180,592.36218 260,0 0,20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 240,588.36218 280,0 0,24"
+       id="path11138"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path11140"
+       d="m 300,596.36218 270,0 0,16"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 360,584.36218 350,0 0,28"
+       id="path11142"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10304"
+       width="10"
+       height="10"
+       x="-760.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-750.19794"
+       height="10"
+       width="10"
+       id="rect10814"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-740.19794"
+       height="10"
+       width="10"
+       id="rect10816"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10818"
+       width="10"
+       height="10"
+       x="-730.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-720.19794"
+       height="10"
+       width="10"
+       id="rect10820"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10822"
+       width="10"
+       height="10"
+       x="-710.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10824"
+       width="10"
+       height="10"
+       x="-700.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-690.19794"
+       height="10"
+       width="10"
+       id="rect10826"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-680.19794"
+       height="10"
+       width="10"
+       id="rect10828"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10830"
+       width="10"
+       height="10"
+       x="-670.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10832"
+       width="10"
+       height="10"
+       x="-660.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-650.19794"
+       height="10"
+       width="10"
+       id="rect10834"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10836"
+       width="10"
+       height="10"
+       x="-640.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-630.19794"
+       height="10"
+       width="10"
+       id="rect10838"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-620.19794"
+       height="10"
+       width="10"
+       id="rect10840"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10842"
+       width="10"
+       height="10"
+       x="-610.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10844"
+       width="10"
+       height="10"
+       x="-600.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-590.19794"
+       height="10"
+       width="10"
+       id="rect10846"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-580.19794"
+       height="10"
+       width="10"
+       id="rect10848"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10850"
+       width="10"
+       height="10"
+       x="-570.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-560.19794"
+       height="10"
+       width="10"
+       id="rect10852"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10854"
+       width="10"
+       height="10"
+       x="-550.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10856"
+       width="10"
+       height="10"
+       x="-540.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-530.19794"
+       height="10"
+       width="10"
+       id="rect10858"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-520.19794"
+       height="10"
+       width="10"
+       id="rect10860"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10862"
+       width="10"
+       height="10"
+       x="-510.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10864"
+       width="10"
+       height="10"
+       x="-500.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-490.19794"
+       height="10"
+       width="10"
+       id="rect10866"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10868"
+       width="10"
+       height="10"
+       x="-480.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-470.19794"
+       height="10"
+       width="10"
+       id="rect10870"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="512.36218"
+       x="-460.19794"
+       height="10"
+       width="10"
+       id="rect10872"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10874"
+       width="10"
+       height="10"
+       x="-450.19794"
+       y="512.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10876"
+       width="40"
+       height="40"
+       x="-270.19794"
+       y="472.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="572.36218"
+       x="-300.19794"
+       height="40"
+       width="40"
+       id="rect10878"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10880"
+       width="40"
+       height="40"
+       x="-240.19795"
+       y="572.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="572.36218"
+       x="-180.19795"
+       height="40"
+       width="40"
+       id="rect10882"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect10884"
+       width="40"
+       height="40"
+       x="-360.19794"
+       y="572.36218"
+       transform="scale(-1,1)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 270.19795,492.36218 169.80205,0 0,20"
+       id="path10886"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       y="612.36218"
+       x="-760.19794"
+       height="10"
+       width="10"
+       id="rect11072"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11074"
+       width="10"
+       height="10"
+       x="-750.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11076"
+       width="10"
+       height="10"
+       x="-740.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-730.19794"
+       height="10"
+       width="10"
+       id="rect11078"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11080"
+       width="10"
+       height="10"
+       x="-720.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-710.19794"
+       height="10"
+       width="10"
+       id="rect11082"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-700.19794"
+       height="10"
+       width="10"
+       id="rect11084"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11086"
+       width="10"
+       height="10"
+       x="-690.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11088"
+       width="10"
+       height="10"
+       x="-680.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-670.19794"
+       height="10"
+       width="10"
+       id="rect11090"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-660.19794"
+       height="10"
+       width="10"
+       id="rect11092"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11094"
+       width="10"
+       height="10"
+       x="-650.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-640.19794"
+       height="10"
+       width="10"
+       id="rect11096"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11098"
+       width="10"
+       height="10"
+       x="-630.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11100"
+       width="10"
+       height="10"
+       x="-620.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-610.19794"
+       height="10"
+       width="10"
+       id="rect11102"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-600.19794"
+       height="10"
+       width="10"
+       id="rect11104"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11106"
+       width="10"
+       height="10"
+       x="-590.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11108"
+       width="10"
+       height="10"
+       x="-580.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-570.19794"
+       height="10"
+       width="10"
+       id="rect11110"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11112"
+       width="10"
+       height="10"
+       x="-560.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-550.19794"
+       height="10"
+       width="10"
+       id="rect11114"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-540.19794"
+       height="10"
+       width="10"
+       id="rect11116"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11118"
+       width="10"
+       height="10"
+       x="-530.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11120"
+       width="10"
+       height="10"
+       x="-520.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-510.19794"
+       height="10"
+       width="10"
+       id="rect11122"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-500.19794"
+       height="10"
+       width="10"
+       id="rect11124"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11126"
+       width="10"
+       height="10"
+       x="-490.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-480.19794"
+       height="10"
+       width="10"
+       id="rect11128"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11130"
+       width="10"
+       height="10"
+       x="-470.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11132"
+       width="10"
+       height="10"
+       x="-460.19794"
+       y="612.36218"
+       transform="scale(-1,1)" />
+    <rect
+       y="612.36218"
+       x="-450.19794"
+       height="10"
+       width="10"
+       id="rect11134"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="scale(-1,1)" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11144"
+       width="40"
+       height="40"
+       x="-330.19794"
+       y="672.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="672.36218"
+       x="-270.19794"
+       height="40"
+       width="40"
+       id="rect11146"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11148"
+       width="40"
+       height="40"
+       x="-210.19795"
+       y="672.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="672.36218"
+       x="-390.19794"
+       height="40"
+       width="40"
+       id="rect11150"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11152"
+       width="10"
+       height="10"
+       x="-760.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-750.19794"
+       height="10"
+       width="10"
+       id="rect11154"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-740.19794"
+       height="10"
+       width="10"
+       id="rect11156"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11158"
+       width="10"
+       height="10"
+       x="-730.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-720.19794"
+       height="10"
+       width="10"
+       id="rect11160"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11162"
+       width="10"
+       height="10"
+       x="-710.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11164"
+       width="10"
+       height="10"
+       x="-700.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-690.19794"
+       height="10"
+       width="10"
+       id="rect11166"
+       style="fill:#ffed00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-680.19794"
+       height="10"
+       width="10"
+       id="rect11168"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11170"
+       width="10"
+       height="10"
+       x="-670.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#00b8ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11172"
+       width="10"
+       height="10"
+       x="-660.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-650.19794"
+       height="10"
+       width="10"
+       id="rect11174"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11176"
+       width="10"
+       height="10"
+       x="-640.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-630.19794"
+       height="10"
+       width="10"
+       id="rect11178"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-620.19794"
+       height="10"
+       width="10"
+       id="rect11180"
+       style="fill:#82ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11182"
+       width="10"
+       height="10"
+       x="-610.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11184"
+       width="10"
+       height="10"
+       x="-600.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-590.19794"
+       height="10"
+       width="10"
+       id="rect11186"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-580.19794"
+       height="10"
+       width="10"
+       id="rect11188"
+       style="fill:#ff2200;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11190"
+       width="10"
+       height="10"
+       x="-570.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-560.19794"
+       height="10"
+       width="10"
+       id="rect11192"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11194"
+       width="10"
+       height="10"
+       x="-550.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11196"
+       width="10"
+       height="10"
+       x="-540.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-530.19794"
+       height="10"
+       width="10"
+       id="rect11198"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-520.19794"
+       height="10"
+       width="10"
+       id="rect11200"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11202"
+       width="10"
+       height="10"
+       x="-510.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11204"
+       width="10"
+       height="10"
+       x="-500.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-490.19794"
+       height="10"
+       width="10"
+       id="rect11206"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11208"
+       width="10"
+       height="10"
+       x="-480.19794"
+       y="712.36218" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-470.19794"
+       height="10"
+       width="10"
+       id="rect11210"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       y="712.36218"
+       x="-460.19794"
+       height="10"
+       width="10"
+       id="rect11212"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect11214"
+       width="10"
+       height="10"
+       x="-450.19794"
+       y="712.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 160,572.36218 0,-20 90,0 0,-40"
+       id="path11228"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 250,552.36218 90,0 0,20"
+       id="path11230"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 220,572.36218 0,-20"
+       id="path11232"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       d="m 280,572.36218 0,-20"
+       id="path11234"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12170"
+       d="m 190,672.36218 0,-20 90,0 0,-40"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none"
+       sodipodi:nodetypes="cccc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12172"
+       d="m 280,652.36218 90,0 0,20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12174"
+       d="m 250,672.36218 0,-20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path12176"
+       d="m 310,672.36218 0,-20"
+       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:none" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="110"
+       y="496.36218"
+       id="text12197"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12199"
+         x="110"
+         y="496.36218">level 0</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12201"
+       y="596.36218"
+       x="110"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="596.36218"
+         x="110"
+         id="tspan12203"
+         sodipodi:role="line">level 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="110"
+       y="696.36218"
+       id="text12205"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12207"
+         x="110"
+         y="696.36218">level 2</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12209"
+       y="520.36218"
+       x="780"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="520.36218"
+         x="780"
+         id="tspan12211"
+         sodipodi:role="line">parts</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       x="780"
+       y="620.36218"
+       id="text12213"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan12215"
+         x="780"
+         y="620.36218">parts</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text12217"
+       y="720.36218"
+       x="780"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Bold"
+       xml:space="preserve"><tspan
+         y="720.36218"
+         x="780"
+         id="tspan12219"
+         sodipodi:role="line">parts</tspan></text>
+  </g>
+</svg>
diff --git a/paper/figures/QR_scaling.eps b/paper/figures/QR_scaling.eps
new file mode 100644
index 0000000..48f3f79
--- /dev/null
+++ b/paper/figures/QR_scaling.eps
@@ -0,0 +1,412 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: MATLAB, The MathWorks, Inc. Version 8.0.0.783 (R2012b). Operating System: Linux 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64.
+%%Title: figures/QR_scaling.eps
+%%CreationDate: 10/30/2013  20:36:25
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox:    25    16   788   297
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s {show newpath} bdef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile 
+  3 index 0 eq {/ASCIIHexDecode filter}
+  {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
+  ifelse exch readstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:    25    16   788   297
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0192 3636 csm
+
+  114    65  9156  3375 rc
+85 dict begin %Colortable dictionary
+/c0 { 0.000000 0.000000 0.000000 sr} bdef
+/c1 { 1.000000 1.000000 1.000000 sr} bdef
+/c2 { 0.900000 0.000000 0.000000 sr} bdef
+/c3 { 0.000000 0.820000 0.000000 sr} bdef
+/c4 { 0.000000 0.000000 0.800000 sr} bdef
+/c5 { 0.910000 0.820000 0.320000 sr} bdef
+/c6 { 1.000000 0.260000 0.820000 sr} bdef
+/c7 { 0.000000 0.820000 0.820000 sr} bdef
+c0
+1 j
+1 sg
+   0    0 9404 3445 rf
+6 w
+0 2756 2821 0 0 -2756 282 3100 4 MP
+PP
+-2821 0 0 2756 2821 0 0 -2756 282 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+ 282 3100 mt 3103 3100 L
+ 282 3100 mt  282  344 L
+ 685 3100 mt  685 3071 L
+ 685  344 mt  685  372 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 619 3245 mt 
+(10) s
+1132 3100 mt 1132 3071 L
+1132  344 mt 1132  372 L
+1066 3245 mt 
+(20) s
+1580 3100 mt 1580 3071 L
+1580  344 mt 1580  372 L
+1514 3245 mt 
+(30) s
+2028 3100 mt 2028 3071 L
+2028  344 mt 2028  372 L
+1962 3245 mt 
+(40) s
+2476 3100 mt 2476 3071 L
+2476  344 mt 2476  372 L
+2410 3245 mt 
+(50) s
+2923 3100 mt 2923 3071 L
+2923  344 mt 2923  372 L
+2857 3245 mt 
+(60) s
+ 282 3100 mt  310 3100 L
+3103 3100 mt 3074 3100 L
+ 181 3144 mt 
+(0) s
+ 282 2669 mt  310 2669 L
+3103 2669 mt 3074 2669 L
+ 114 2713 mt 
+(10) s
+ 282 2238 mt  310 2238 L
+3103 2238 mt 3074 2238 L
+ 114 2282 mt 
+(20) s
+ 282 1808 mt  310 1808 L
+3103 1808 mt 3074 1808 L
+ 114 1852 mt 
+(30) s
+ 282 1377 mt  310 1377 L
+3103 1377 mt 3074 1377 L
+ 114 1421 mt 
+(40) s
+ 282  946 mt  310  946 L
+3103  946 mt 3074  946 L
+ 114  990 mt 
+(50) s
+ 282  516 mt  310  516 L
+3103  516 mt 3074  516 L
+ 114  560 mt 
+(60) s
+ 282 3100 mt 3103 3100 L
+ 282  344 mt 3103  344 L
+ 282 3100 mt  282  344 L
+3103 3100 mt 3103  344 L
+gs 282 344 2822 2757 rc
+24 w
+45 10 45 -16 45 -36 45 -14 44 -36 45 -2 45 2 45 -8 
+44 -79 45 21 45 -53 45 -20 45 -20 44 -32 45 -2 45 -23 
+45 -18 44 -26 45 -33 45 -16 45 -35 45 -29 44 -34 45 -15 
+45 -24 45 -27 44 -52 45 -27 45 -24 45 -49 45 -17 44 -27 
+45 -6 45 -52 45 -43 44 -37 45 -43 45 -4 45 -46 45 -34 
+44 -52 45 -37 45 -42 45 -37 44 -20 45 -53 45 -37 45 -28 
+45 -51 44 -38 45 -33 45 -40 45 -40 44 -51 45 -42 45 -40 
+45 -39 45 -43 44 -37 45 -44 45 -41 45 -43 44 -42 282 3056 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+2648 1059 mt 
+(233ms) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1464 3388 mt 
+(nr. cores) s
+gs 282 344 2822 2757 rc
+DO
+16.8 w
+2821 -2712 282 3056 2 MP stroke
+gr
+
+16.8 w
+DO
+ 942  249 mt 
+(Speedup QR decomposition) s
+SO
+6 w
+1 sg
+0 2757 5642 0 0 -2757 3573 3100 4 MP
+PP
+-5642 0 0 2757 5642 0 0 -2757 3573 3100 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+3573 3100 mt 9215 3100 L
+3573 3100 mt 3573  343 L
+4379 3100 mt 4379 3043 L
+4379  344 mt 4379  400 L
+4313 3245 mt 
+(10) s
+5274 3100 mt 5274 3043 L
+5274  344 mt 5274  400 L
+5208 3245 mt 
+(20) s
+6170 3100 mt 6170 3043 L
+6170  344 mt 6170  400 L
+6104 3245 mt 
+(30) s
+7065 3100 mt 7065 3043 L
+7065  344 mt 7065  400 L
+6999 3245 mt 
+(40) s
+7961 3100 mt 7961 3043 L
+7961  344 mt 7961  400 L
+7895 3245 mt 
+(50) s
+8856 3100 mt 8856 3043 L
+8856  344 mt 8856  400 L
+8790 3245 mt 
+(60) s
+3573 3100 mt 3629 3100 L
+9215 3100 mt 9158 3100 L
+3472 3144 mt 
+(0) s
+3573 2598 mt 3629 2598 L
+9215 2598 mt 9158 2598 L
+3372 2642 mt 
+(0.2) s
+3573 2097 mt 3629 2097 L
+9215 2097 mt 9158 2097 L
+3372 2141 mt 
+(0.4) s
+3573 1596 mt 3629 1596 L
+9215 1596 mt 9158 1596 L
+3372 1640 mt 
+(0.6) s
+3573 1095 mt 3629 1095 L
+9215 1095 mt 9158 1095 L
+3372 1139 mt 
+(0.8) s
+3573  594 mt 3629  594 L
+9215  594 mt 9158  594 L
+3472  638 mt 
+(1) s
+3573 3100 mt 9215 3100 L
+3573  343 mt 9215  343 L
+3573 3100 mt 3573  343 L
+9215 3100 mt 9215  343 L
+gs 3573 344 5643 2757 rc
+24 w
+90 38 90 14 89 -3 90 17 89 -3 90 30 89 36 90 26 
+89 -48 90 59 90 -21 89 16 90 15 89 3 90 39 89 14 
+90 22 89 11 90 4 90 26 89 2 90 10 89 4 90 32 
+89 18 90 18 89 -24 90 17 90 23 89 -20 90 38 89 20 
+90 62 89 -25 90 -7 89 6 90 -9 90 78 89 -12 90 16 
+89 -30 90 9 89 -5 90 10 89 61 90 -38 90 13 89 45 
+90 -34 89 13 90 35 89 11 90 11 89 -52 90 0 90 8 
+89 25 90 -12 89 55 90 -19 89 33 90 -20 89 26 3573 594 64 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+8909 1149 mt 
+(73%) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6166 3388 mt 
+(nr. cores) s
+gs 3573 344 5643 2757 rc
+DO
+16.8 w
+5642 0 3573 594 2 MP stroke
+gr
+
+16.8 w
+DO
+5412  249 mt 
+(Parallel Efficiency QR decomposition) s
+SO
+6 w
+
+end %%Color Dict
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
diff --git a/paper/figures/QR_scaling.pdf b/paper/figures/QR_scaling.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5e165c3ae338368f044dfc39c4ce7117d06b7608
GIT binary patch
literal 8319
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

literal 0
HcmV?d00001

diff --git a/paper/paper.tex b/paper/paper.tex
index 2fe9a44..f4d5fdf 100644
--- a/paper/paper.tex
+++ b/paper/paper.tex
@@ -475,6 +475,8 @@ that are themselves subsets of larger resources.
 This can be useful, e.g.~in the context of particle simulations
 described in the next section, where particles are sorted
 into hierarchical cells which are used at different levels.
+The owner field is the ID of the queue to which this
+resource has been preferentially assigned.
 
 The {\tt lock} field is either {\tt 0} or {\tt 1} and indicates
 whether this resource is currently in use, i.e.~{\em locked}.
@@ -798,7 +800,7 @@ struct task *qsched_gettask ( qsched *s , int qid ) {
     else
       break;
     }
-  if ( res != NULL ) {
+  if ( res != NULL && s->reown ) {
     for ( k = 0 ; k < res->nr_locks ; k++ )
       res->locks[k]->owner = qid;
     for ( k = 0 ; k < res->nr_uses ; k++ )
@@ -815,7 +817,8 @@ unresolved conflicts, the scheduler uses {\em work stealing}
 \cite{ref:Blumofe1999}, i.e.~it loops over all other queues
 in a random order (line~6) and tries to get a task from them
 (line~7).
-If a task could be obtained from any queue (line~13),
+If a task could be obtained from any queue and task re-owning
+is switched on (line~13),
 the resources it locks and uses are marked as now being owned
 by the prefered queue (lines~14--17).
 Finally, the task, or {\tt NULL} if no task could be obtained,
@@ -894,9 +897,11 @@ The main functions for setting up the scheduler are:
         e.g. they are used only to group or otherwise dependencies, and
         are not passed to the execution function in {\tt qsched\_run}.
         \vspace{1mm}
-    \item {\tt qsched\_res\_t qsched\_addres( struct qsched *s , qsched\_res\_t parent )} \\
+    \item {\tt qsched\_res\_t qsched\_addres( struct qsched *s , int owner , qsched\_res\_t parent )} \\
         Creates a new resource within the given {\tt qsched} and returns
         its handle.
+        The owner field is the initial queue ID to which this resource
+        should be assigned, or {\tt qsched\_owner\_none}.
         The {\tt parent} field is the handle of the heirarchical parent of
         the new resource or {\tt qsched\_res\_none} if the resource
         has no hierarchical parent.
@@ -959,8 +964,22 @@ This section presents two test cases showing both
 how QuickSched can be used in real-world applications, and
 providing benchmarks to assess its efficiency and scalability.
 
+The first test is the tiled QR decomposition originally
+from \citeN{ref:Buttari2009}, which has been used as a benchmark
+by other authors \cite{ref:Agullo2009b,ref:Badia2009,ref:Bosilca2012}.
+This example only requires dependencies and is presented
+only as a point of comparison to existing task-based
+parallel infrastructures.
+
+The second example is a Barnes-Hut tree-code, a problem
+similar to the Fast Multipole Method described in both
+\citeN{ref:Ltaief2012} and \citeN{ref:Agullo2013}.
+This example shows how conflicts, modeled
+via hierarchical resources, can be useful.
+
 The source code of both examples is distributed with the
-QuickSched library.
+QuickSched library, along with scripts to run the benchmarks
+and generate the plots used in the following.
 
 
 \subsection{Task-Based QR Decomposition}
@@ -1135,11 +1154,383 @@ void exec_fun ( int type , void *data ) {
 \noindent where {\tt A} is the matrix over which the QR
 decmposition is executed.
 
+The QR decomposition was computed for a $2048\times 2048$
+random matrix using tiles of size $64\times 64$ using QuickSched
+as described above.
+For the DGEQRF and DLARFT kernels, the respective routines
+from the LAPACKE\footnote{\url{http://www.netlib.org/lapack/lapacke.html}}
+library were used.
+The DTSQRF and DSSRFT kernels were implemented by Sam Townsend
+as part of his MSc thesis in Computer Science at Durham University.
+For this matrix, a total of 11440 tasks with 32240 dependencies
+were generated.
+
+All tests were run on a 64-core AMD Opteron 6376 machine running
+at 2.6\,GHz.
+For these tests, OpenMP parallelism and resource re-owning
+were used.
+The QR decomposition was computed 10 times for each number of
+cores, and the average thereof taken for the scaling and
+efficiency results in \fig{QRResults}.
+The timings are for {\tt qsched\_run}, including the cost of
+{\tt qsched\_start}, which does not run in parallel.
+Setting up the scheduler, tasks, and resources took, in all
+cases, an average of 7.2\,ms.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/QR_scaling.pdf,width=0.9\textwidth}}
+    \caption{Strong scaling and parallel efficiency of the tiled QR decomposition
+        computed over a $2048\times 2048$ matrix with tiles of size
+        $64\times 64$.
+        The QR decomposition takes 233\,ms, achieving 73\% parallel
+        efficiency, over all 64 cores.
+        }
+    \label{fig:QRResults}
+\end{figure}
+
 
 \subsection{Task-Based Barnes-Hut N-Body Solver}
 
-The Barnes-Hut tree-code is an algorithm to compute the
-interactions between a set of particles 
+The Barnes-Hut tree-code is an algorithm to approximate the
+solution of an $N$-body problem, i.e.~computing all the
+pairwise interactions between a set of $N$ particles,
+in \oh{N\log N} operations, as opposed to the \oh{N^2}
+naive direct computation.
+
+The algorithm is based on a recursive octree decomposition:
+Starting from a cubic cell containing all the particles,
+the cell is recursivel bisected along all three spatial dimensions,
+resulting in eight sub-cells, until the number of particles
+per cell is smaller than some limit $n_\mathsf{max}$.
+
+The particle interactions can also be formulated recursively:
+Given a particle an a cell of particles, if the particle and cell
+are sufficiently well separated, the particle-cell interactions
+are approximated by interacting the particle with the cell's
+centre of mass.
+If the particle and the cell are too close, and the cell
+has sub-cells, i.e.~it contained more than $n_\mathsf{max}$
+particles and was split in the recursive octree decomposition,
+then the particle is interacted with each of the sub-cells
+recursively.
+Finally, if the cell is not split, i.e.~it is a leaf cell
+in the octree, then the particle is interacted with all
+particles in the cell, except for the particle itself if
+it is in the same cell.
+This operation is performed for each particle, starting
+with the root-level cell containing all the particles.
+
+The cells have the following structure:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+struct cell {
+  double loc[3], h[3], com[3], mass;
+  int split, count;
+  struct part *parts;
+  struct cell *progeny[8];
+  qsched_res_t res;
+  qsched_task_t task_com;
+  };
+    \end{lstlisting}
+\end{minipage}\end{center}
+\noindent where {\tt loc} and {\tt h} are the location
+and size of the cell, respectively.
+The {\tt com} and {\tt mass} fields represent the cell's
+center of mass, which will be used in the interactions.
+The {\tt res} filed is the hieararchical resource representing
+the cell's particles, and it is the parent resource of the cell
+progeny's {\tt res}.
+Similarly, the {\tt task\_com} is a task handle to
+compute the center of mass of the cell's particles, and 
+it depends on the {\tt task\_com} of all the progeny if
+the cell is split.
+{\tt parts} is a pointer to an array of {\tt count} 
+particle strutures, which contain all the particle
+data of the form:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+struct part {
+  double x[3], a[3], mass;
+  int id;
+  };
+    \end{lstlisting}
+\end{minipage}\end{center}
+\noindent i.e.~the particle position, accelleration, mass,
+and ID, respectively.
+
+The particle data is sorted hierarchically, following the
+octree structure.
+Unlike in many codes, where the leaves store an array of
+pointers to the underlying particles, the cells, at all
+levels, store only a pointer to the first of their own particles,
+and the total number of particles.
+The current approach, illustrated in \fig{CellParts} is not
+only more compact, it also allows a direct and more cache-efficient access
+to the list of particles for any inner node of the tree.
+The cost of sorting the particles, with a recursive
+partitioning similar to QuickSort \cite{ref:Hoare1962},
+is in \oh{N\log N}.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/CellParts.pdf,width=0.9\textwidth}}
+    \caption{Hierarchical ordering of the particle data structures
+    (right) according to their cell (left).
+    Each cell has a pointer to the first of its particles (same colour
+    as cells) in the same global parts array.}
+    \label{fig:CellParts}
+\end{figure}
+
+The task-based implementation will consist of four
+types of tasks:
+\begin{itemize}
+    \item {\em Self}-interactions in which all particles
+        in a single cell interact with all other particles in the
+        same cell,
+    \item {\em Particle-particle pair}-interactions in which
+        all particles in a pair of cells interact with all
+        particles in the opposite cell, and
+    \item {\em Particle-cell pair}-interactions in which
+        all particles in one cell are interacted with the
+        center of mass of another cell.
+    \item {\em Center of mass} tasks, which compute
+        the center of mass of a single cell either from
+        the sum of the centers of mass of its sub-cells
+        if it has been split, or directly from the
+        particles otherwise.
+\end{itemize}
+
+\begin{figure}
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+enum { tSELF , tPAIR_PP , tPAIR_PC , tCOM };
+void make_tasks ( struct qsched *s , struct cell *ci , struct cell *cj ) {
+  int j, k;
+  qsched_task_t tid;
+  struct cell *data[2];
+  if ( cj == NULL ) {
+    if ( ci->split && ci->count > n_task )
+      for ( j = 0 ; j < 8 ; j++ ) {
+        make_tasks( s , ci->progeny[j] , NULL );
+        for ( k = j+1 ; k < 8 ; k++ )
+          make_tasks( s , ci->progeny[j] , ci->progeny[k] );
+        }
+    else {
+      tid = qsched_addtask( s , tSELF , qsched_flags_none ,
+        &ci , sizeof(struct cell *) , ci->count*ci->count );
+      qsched_addlock( s , tid , ci->res );
+      if ( ci->split )
+        qsched_addunlock( s , ci->com , tid );
+      }
+    }
+  else if ( ci and cj are well separated ) {
+      data[0] = ci; data[1] = cj;
+      tid = qsched_addtask( s , tPAIR_PC , qsched_flags_none ,
+        data , sizeof(struct cell *)*2 , ci->count );
+      qsched_addlock( s , tid , ci->res );
+      qsched_addunlock( s , cj->com , tid );
+      data[0] = cj; data[1] = ci;
+      tid = qsched_addtask( s , tPAIR_PC , qsched_flags_none ,
+        data , sizeof(struct cell *)*2 , cj->count );
+      qsched_addlock( s , tid , cj->res );
+      qsched_addunlock( s , ci->com , tid );
+      }
+  else if ( ci->split && cj->split && 
+     ci->count*cj->count > n_task*n_task )
+    for ( j = 0 ; j < 8 ; j++ )
+      for ( k = 0 ; k < 8 ; k++ )
+        make_tasks( s , ci->progeny[j] , cj->progeny[k] );
+  else {
+    data[0] = ci; data[1] = cj;
+    tid = qsched_addtask( s , tPAIR_PP , qsched_flags_none ,
+      data , sizeof(struct cell *)*2 , ci->count*cj->count );
+    qsched_addlock( s , tid , ci->res );
+    qsched_addlock( s , tid , cj->res );
+    if ( ci->split && cj->split ) {
+      qsched_addunlock( s , ci->com , tid );
+      qsched_addunlock( s , cj->com , tid );
+      }
+    }
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+    \caption{C-like pseudo-code for recursive task creation
+        for the Barnes-Hut tree-code.}
+    \label{fig:MakeTasks}
+\end{figure}
+
+These tasks can be created recursively over the cell hierarchy
+as shown in the function {\tt make\_tasks} in \fig{MakeTasks}.
+The function is called on the root cell with the root cell
+and {\tt NULL} as its two cell parameters.
+The function recurses as follows:
+\begin{itemize}
+    \item If called with a single (line~6), split (line~7) cell,
+        recurse over all the cell's sub cells (line~9), and all
+        pairs of the cell's sub cells (line~11),
+    \item If called with a single unslplit cell (line~13),
+        create a self-interaction task on that cell (line~14),
+    \item If called with two cells that are sufficiently well
+        separated (line~21), create two particle-cell pair
+        interactions (lines~23 and~28) over both cells in
+        opposite orders, which depend on the center of mass
+        task of each cell,
+    \item If called with two cells that are not well
+        separated and both cells are split (line~33),
+        recurse over all pairs of sub-cells spanning
+        both cells (line~37), and
+    \item If called with two cells that are not well separated
+        and either of the cells are not split, create
+        a particle-particle pair task over both cells.
+\end{itemize}
+\noindent where every interaction task additionally locks
+the cells on which it operates (lines~16, 25, 30, and 42--43).
+
+In order to reduce the number of tasks, and to prevent generating
+too many very small tasks, the task generation only recurses
+if the cells contain more than a minimum number $n_\mathsf{task}$
+of threads each (lines~7 and~34).
+The tasks themselves are then left to recurse over the sub-trees,
+which is why in these cases, the tasks are made to depend on the
+center of mass tasks (lines~17--18 and~41--47)
+which may be used in the ensuing interactions.
+
+\begin{figure}
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+void comp_com ( struct cell *c ) {
+  int j, k;
+  c->com[0] = 0.0; c->com[1] = 0.0; c->com[2] = 0.0;
+  c->mas = 0.0;
+  if ( c->split )
+    for ( k = 0 ; k < 8 ; k++ ) {
+      struct cell *cp = c->progeny[k]
+      for ( j = 0 ; j < 3 ; j++ ) c->com[j] += cp->com[j]*cp->mass;
+      c->mass += cp->mass;
+      }
+  else
+    for ( k = 0 ; k < 8 ; k++ ) {
+      struct part *p = &c->parts[k];
+      for ( j = 0 ; j < 3 ; j++ ) c->com[j] += p->x[j]*p->mass;
+      c->mass += p->mass;
+      }
+  c->com[0] /= c->mass; c->com[1] /= c->mass; c->com[2] /= c->mass; 
+  }
+
+void comp_self ( struct cell *c ) {
+  int j, k;
+  if ( c->split )
+    for ( j = 0 ; j < 8 ; j++ ) {
+      comp_self( c->progeny[j] );
+      for ( k = j+1 ; k < 8 ; k++ )
+        comp_pair( c->progeny[j] , c->progeny[k] );
+      }
+  else
+    for ( j = 0 ; j < c->count ; j++ )
+      for ( k = j+1 ; k < c->count ; k++ )
+        interact c->parts[j] and c->parts[k].
+  }
+
+void comp_pair ( struct cell *ci , struct cell *cj ) {
+  int j, k;
+  if ( ci and cj well separated ) {
+    comp_pair_pc( ci , cj );
+    comp_pair_pc( cj , ci );
+    }
+  else if ( ci->split && cj->split )
+    for ( j = 0 ; j < 8 ; j++ )
+      for ( k = 0 ; k < 8 ; k++ )
+        comp_pair( ci->progeny[j] , cj->progeny[k] );
+  else
+    for ( j = 0 ; j < ci->count ; j++ )
+      for ( k = 0 ; k < cj->count ; k++ )
+        interact ci->parts[j] and cj->parts[k].
+  }
+
+void comp_pair_cp ( struct cell *ci , struct cell *cj ) {
+  int k;
+  for ( k = 0 ; k < ci->count ; k++ )
+    interact ci->parts[k] and cj center of mass.
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+    \caption{Task functions for the Barnes-Hut tree-code.}
+    \label{fig:BHTasks}
+\end{figure}
+
+The functions for the task themselves are relatively
+straight-forward and shown in \fig{BHTasks}, and the
+execution function can be written as:
+\begin{center}\begin{minipage}{0.9\textwidth}
+    \begin{lstlisting}
+void exec_fun ( int type , void *data ) {
+  struct cell **cells = (struct cell **)data;
+  switch ( type ) {
+    case tSELF:
+      comp_self( cells[0] );
+      break;
+    case tPAIR_PP:
+      comp_pair( cells[0] , cells[1] );
+      break;
+    case tPAIR_PC:
+      comp_pair_pc( cells[0] , cells[1] );
+      break;
+    case tCOM:
+      comp_com( cells[0] );
+      break;
+    default:
+      error( "Unknown task type." );
+    }
+  }
+    \end{lstlisting}
+\end{minipage}\end{center}
+
+
+This Barnes-Hut tree-code was used to approximate the gravitational
+N-Body problem for 1\,000\,000 particles with random coordinates the
+parameters $n_\mathsf{max}=100$ and $n_\mathsf{task}=5000$.
+Cell pairs were considered well separated if not adjecent.
+Using the above scheme generated 161\,613 tasks, of which
+512 self-interaction tasks, 18\,532 particle-particle interaction
+task, 105\,120 particle-cell interaction tasks, and 37\,449
+center of mass tasks.
+Additionally 179\,632 dependencies were generated, along with
+142'696 locks on 37\,449 resources.
+
+As with the previous example, all
+tests were run on a 64-core AMD Opteron 6376 machine running
+at 2.6\,GHz.
+For these tests, OpenMP parallelism was used and resource
+re-owning was switched off.
+The interactions  computed 10 times for each number of
+cores, and the average thereof taken for the scaling and
+efficiency results in \fig{BHResults}.
+The timings are for {\tt qsched\_run}, including the cost of
+{\tt qsched\_start}, which does not run in parallel.
+Setting up the scheduler, tasks, and resources took, in all
+cases, an average of 51.3\,ms.
+
+\begin{figure}
+    \centerline{\epsfig{file=figures/BH_scaling.pdf,width=0.9\textwidth}}
+    \caption{Strong scaling and parallel efficiency of the Barnes-Hut tree-code
+        computed over 1\,000\,000 particles.
+        Solving the N-Body problem takes 3.5\,s, achieving 52\% parallel
+        efficiency, over all 64 cores.
+        }
+    \label{fig:BHResults}
+\end{figure}
+
+Unlike the QR decomposition, the results scale well only to
+32 cores, achieving 90\% parallel efficiency, and then
+level off for increasing numbers of cores.
+This, however, is not a problem of the task-based parallel
+algorith, or of QuickSched, but of the cache hierarchies
+of the underlying hardware.
+On the AMD Opteron 6376, the cores are grouped into pairs
+which each share a 2\,MB L2 cache.
+Each group of four pairs, or eight cores, shares a common
+6\,MB L3 cache.
+It is the difference between the sum of the L2 caches and
+the (smaller) L3 cache which causes problems.
 
 
 \section{Conclusions}
diff --git a/paper/quicksched.bib b/paper/quicksched.bib
index 646bde2..6ec34f5 100644
--- a/paper/quicksched.bib
+++ b/paper/quicksched.bib
@@ -169,3 +169,45 @@
     year={2009},
     organization={IOP Publishing}
     }
+
+@article{ref:Hoare1962,
+    title={Quicksort},
+    author={Hoare, Charles AR},
+    journal={The Computer Journal},
+    volume={5},
+    number={1},
+    pages={10--16},
+    year={1962},
+    publisher={Br Computer Soc}
+    }
+
+@article{ref:Bosilca2012,
+    title={{DAGuE}: A generic distributed DAG engine for high performance computing},
+    author={Bosilca, George and Bouteiller, Aurelien and Danalis, Anthony and Herault, Thomas and Lemarinier, Pierre and Dongarra, Jack},
+    journal={Parallel Computing},
+    volume={38},
+    number={1},
+    pages={37--51},
+    year={2012},
+    publisher={Elsevier}
+    }
+
+@article{ref:Badia2009,
+    title={Parallelizing dense and banded linear algebra libraries using {SMPSs}},
+    author={Badia, Rosa M and Herrero, Jos{\'e} R and Labarta, Jes{\'u}s and P{\'e}rez, Josep M and Quintana-Ort{\'\i}, Enrique S and Quintana-Ort{\'\i}, Gregorio},
+    journal={Concurrency and Computation: Practice and Experience},
+    volume={21},
+    number={18},
+    pages={2438--2456},
+    year={2009},
+    publisher={Wiley Online Library}
+    }
+
+@inproceedings{ref:Agullo2009b,
+    title={Comparative study of one-sided factorizations with multiple software packages on multi-core hardware},
+    author={Agullo, Emmanuel and Hadri, Bilel and Ltaief, Hatem and Dongarrra, Jack},
+    booktitle={Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis},
+    pages={20},
+    year={2009},
+    organization={ACM}
+    }
-- 
GitLab