This commit is contained in:
2017-10-13 17:02:31 +02:00
parent 7d03ad7051
commit 8a86545c86
55 changed files with 10483 additions and 1759 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
*.aux *.aux
*.bbl *.bbl
*.blg *.blg
*.pdf thesis.pdf
*.toc *.toc
thesis.run.xml thesis.run.xml
thesis-blx.bib thesis-blx.bib
File diff suppressed because it is too large Load Diff
+461 -139
View File
@@ -1,36 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
<!--Created by yEd 3.14--> <!--Created by yEd 3.12-->
<key for="graphml" id="d0" yfiles.type="resources"/> <key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
<key for="port" id="d1" yfiles.type="portgraphics"/> <key for="port" id="d1" yfiles.type="portgraphics"/>
<key for="port" id="d2" yfiles.type="portgeometry"/> <key for="port" id="d2" yfiles.type="portgeometry"/>
<key for="port" id="d3" yfiles.type="portuserdata"/> <key for="port" id="d3" yfiles.type="portuserdata"/>
<key attr.name="url" attr.type="string" for="node" id="d4"/> <key attr.name="url" attr.type="string" for="node" id="d4"/>
<key attr.name="description" attr.type="string" for="node" id="d5"/> <key attr.name="description" attr.type="string" for="node" id="d5"/>
<key for="node" id="d6" yfiles.type="nodegraphics"/> <key for="node" id="d6" yfiles.type="nodegraphics"/>
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/> <key for="graphml" id="d7" yfiles.type="resources"/>
<key attr.name="url" attr.type="string" for="edge" id="d8"/> <key attr.name="url" attr.type="string" for="edge" id="d8"/>
<key attr.name="description" attr.type="string" for="edge" id="d9"/> <key attr.name="description" attr.type="string" for="edge" id="d9"/>
<key for="edge" id="d10" yfiles.type="edgegraphics"/> <key for="edge" id="d10" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="G"> <graph edgedefault="directed" id="G">
<data key="d7"/> <data key="d0"/>
<node id="n0"> <node id="n0">
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="60.0" width="122.0" x="688.9031357885135" y="212.60369389972976"/> <y:Geometry height="78.0" width="132.0" x="579.0" y="152.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0">&lt;html&gt; <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" textColor="#000000" visible="true" width="32.0" x="50.0" y="20.5">&lt;html&gt;A&lt;sub&gt;1&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
A&lt;sub&gt;1&lt;/sub&gt;
&lt;/html&gt;<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter> </y:ModelParameter>
</y:NodeLabel> </y:NodeLabel>
<y:Shape type="rectangle"/> <y:Shape type="roundrectangle"/>
</y:ShapeNode> </y:ShapeNode>
</data> </data>
</node> </node>
@@ -38,10 +36,10 @@ A&lt;sub&gt;1&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="272.60369389972976"/> <y:Geometry height="17.0" width="17.0" x="636.5" y="224.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -57,12 +55,11 @@ A&lt;sub&gt;1&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="60.0" width="122.0" x="618.0" y="314.5"/> <y:Geometry height="17.0" width="17.0" x="653.5" y="224.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0">&lt;html&gt; <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
A&lt;sub&gt;2&lt;/sub&gt; <y:LabelModel>
&lt;/html&gt;<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -77,12 +74,11 @@ A&lt;sub&gt;2&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="60.0" width="122.0" x="770.0" y="314.5"/> <y:Geometry height="17.0" width="17.0" x="619.5" y="224.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0">&lt;html&gt; <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
A&lt;sub&gt;3&lt;/sub&gt; <y:LabelModel>
&lt;/html&gt;<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -97,12 +93,11 @@ A&lt;sub&gt;3&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="60.0" width="122.0" x="688.9031357885135" y="416.39630610027024"/> <y:Geometry height="17.0" width="17.0" x="636.5" y="141.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0">&lt;html&gt; <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
A&lt;sub&gt;4&lt;/sub&gt; <y:LabelModel>
&lt;/html&gt;<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -117,10 +112,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="207.60369389972976"/> <y:Geometry height="17.0" width="17.0" x="653.5" y="141.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -136,10 +131,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="618.0" y="309.5"/> <y:Geometry height="17.0" width="17.0" x="619.5" y="141.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -155,18 +150,17 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="618.0" y="374.5"/> <y:Geometry height="78.0" width="132.0" x="579.0" y="478.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" textColor="#000000" visible="true" width="32.0" x="50.0" y="20.5">&lt;html&gt;A&lt;sub&gt;4&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter> </y:ModelParameter>
</y:NodeLabel> </y:NodeLabel>
<y:Shape type="rectangle"/> <y:Shape type="roundrectangle"/>
</y:ShapeNode> </y:ShapeNode>
</data> </data>
</node> </node>
@@ -174,10 +168,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="770.0" y="309.5"/> <y:Geometry height="17.0" width="17.0" x="636.5" y="550.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -193,10 +187,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="770.0" y="374.5"/> <y:Geometry height="17.0" width="17.0" x="653.5" y="550.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -212,10 +206,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="411.39630610027024"/> <y:Geometry height="17.0" width="17.0" x="619.5" y="550.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -231,10 +225,10 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="476.39630610027024"/> <y:Geometry height="17.0" width="17.0" x="636.5" y="467.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -250,10 +244,11 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="30.0" width="55.0" x="500.0" y="220.0"/> <y:Geometry height="17.0" width="17.0" x="653.5" y="467.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="64.1171875" x="-4.55859375" y="3.6875">Activity<y:LabelModel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -268,10 +263,11 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="30.0" width="116.0" x="469.5" y="262.5"/> <y:Geometry height="17.0" width="17.0" x="619.5" y="467.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="113.9765625" x="1.01171875" y="3.6875">Data Transfer<y:LabelModel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -286,18 +282,17 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="15.0" width="13.0" x="662.0" y="282.5"/> <y:Geometry height="78.0" width="132.0" x="474.5" y="312.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="false" width="4.0" x="4.5" y="5.5"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" textColor="#000000" visible="true" width="32.0" x="50.0" y="20.5">&lt;html&gt;A&lt;sub&gt;2&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter> </y:ModelParameter>
</y:NodeLabel> </y:NodeLabel>
<y:Shape type="ellipse"/> <y:Shape type="roundrectangle"/>
</y:ShapeNode> </y:ShapeNode>
</data> </data>
</node> </node>
@@ -305,10 +300,11 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="30.0" width="55.0" x="500.0" y="305.0"/> <y:Geometry height="17.0" width="17.0" x="532.0" y="384.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="56.234375" x="-0.6171875" y="3.6875">In Port<y:LabelModel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -323,10 +319,11 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="30.0" width="70.0" x="492.5" y="347.5"/> <y:Geometry height="17.0" width="17.0" x="549.0" y="384.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="70.3828125" x="-0.19140625" y="3.6875">Out Port<y:LabelModel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
@@ -341,14 +338,15 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="30.0" width="108.0" x="473.5" y="390.0"/> <y:Geometry height="17.0" width="17.0" x="515.0" y="384.0"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="104.7109375" x="1.64453125" y="3.375">Dependency<y:LabelModel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
<y:ModelParameter> <y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="-4.0" upX="0.0" upY="-1.0"/> <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter> </y:ModelParameter>
</y:NodeLabel> </y:NodeLabel>
<y:Shape type="rectangle"/> <y:Shape type="rectangle"/>
@@ -359,10 +357,235 @@ A&lt;sub&gt;4&lt;/sub&gt;
<data key="d5"/> <data key="d5"/>
<data key="d6"> <data key="d6">
<y:ShapeNode> <y:ShapeNode>
<y:Geometry height="10.0" width="7.0" x="706.0" y="391.5"/> <y:Geometry height="17.0" width="17.0" x="532.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n19">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="549.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n20">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="515.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n21">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="78.0" width="132.0" x="683.5" y="312.0"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" textColor="#000000" visible="true" width="32.0" x="50.0" y="20.5">&lt;html&gt;A&lt;sub&gt;3&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="roundrectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n22">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="741.0" y="384.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n23">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="758.0" y="384.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n24">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="724.0" y="384.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n25">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="741.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n26">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="758.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n27">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="724.0" y="301.0"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n28">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="27.0" width="82.0" x="417.0" y="177.5"/>
<y:Fill hasColor="false" transparent="false"/> <y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/> <y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="false" width="4.0" x="1.5" y="3.0"> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="27.28125" modelName="custom" textColor="#000000" visible="true" width="79.146484375" x="1.4267578125" y="-0.140625">Activity<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n29">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="27.0" width="187.0" x="312.0" y="234.5"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="27.28125" modelName="custom" textColor="#000000" visible="true" width="184.0" x="4.0" y="-0.140625">Data Dependency<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.4945652173913043" labelRatioY="0.0" nodeRatioX="0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n30">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="17.0" x="589.5" y="262.5"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="6.5" y="6.5">
<y:LabelModel> <y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/> <y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel> </y:LabelModel>
@@ -374,126 +597,225 @@ A&lt;sub&gt;4&lt;/sub&gt;
</y:ShapeNode> </y:ShapeNode>
</data> </data>
</node> </node>
<edge id="e0" source="n0" target="n2"> <node id="n31">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="27.0" width="70.0" x="365.0" y="273.25"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="27.28125" modelName="custom" textColor="#000000" visible="true" width="124.263671875" x="-53.588325832201065" y="-0.140625">Data In-Port<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.4945652173913043" labelRatioY="0.0" nodeRatioX="0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n32">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="27.0" width="88.0" x="347.0" y="399.5"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="27.28125" modelName="custom" textColor="#000000" visible="true" width="141.94921875" x="-53.17775560461956" y="-0.140625">Data Out-Port<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.4945652173913043" labelRatioY="0.0" nodeRatioX="0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n33">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="27.0" width="256.0" x="231.0" y="440.5"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="20" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="27.28125" modelName="custom" textColor="#000000" visible="true" width="261.8515625" x="-4.428456182065247" y="-0.140625">Control-Flow Dependency<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.4945652173913043" labelRatioY="0.0" nodeRatioX="0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n34">
<data key="d5"/>
<data key="d6">
<y:ShapeNode>
<y:Geometry height="17.0" width="22.0" x="584.5" y="431.0"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="9.0" y="6.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode>
</data>
</node>
<edge id="e0" source="n3" target="n19">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/> <y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/> <y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="-4.297784791862796" y="10.09128481803009">&lt;html&gt;D&lt;sub&gt;12&lt;/sub&gt;&lt;/html&gt;<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="47.0" x="-14.968674327177496" y="16.6074093999394">&lt;html&gt;D&lt;sub&gt;12&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="left" ratio="0.23681843597895408" segment="-1"/>
</y:ModelParameter>
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
</y:EdgeLabel> </y:EdgeLabel>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
<edge id="e1" source="n0" target="n3"> <edge id="e1" source="n2" target="n27">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/> <y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/> <y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="22.771966549983404" y="8.200390829718799">&lt;html&gt;D&lt;sub&gt;13&lt;/sub&gt;&lt;/html&gt;<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="47.0" x="40.88057657187335" y="7.391070139183739">&lt;html&gt;D&lt;sub&gt;13&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="left" ratio="0.7835528936317135" segment="-1"/>
</y:ModelParameter>
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
</y:EdgeLabel> </y:EdgeLabel>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
<edge id="e2" source="n3" target="n4"> <edge id="e2" source="n14" target="n7">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="48.425715091221264" sy="39.02500176204654" tx="-56.074284908778736" ty="-38.9921875"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="47.0" x="6.499994876377514" y="25.475006103515625">&lt;html&gt;D&lt;sub&gt;24&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/>
</y:ModelParameter>
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
</y:EdgeLabel>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e3" source="n28" target="n0">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="41.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="3.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e4" source="n24" target="n12">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/> <y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/> <y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="-7.050241963968006" y="11.498490705197412">&lt;html&gt;D&lt;sub&gt;34&lt;/sub&gt;&lt;/html&gt;<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="20" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="37.0" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="47.0" x="-16.491763539997805" y="19.589707601396526">&lt;html&gt;D&lt;sub&gt;34&lt;/sub&gt;&lt;/html&gt;<y:LabelModel>
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="left" ratio="0.27128389587830715" segment="-1"/>
</y:ModelParameter>
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
</y:EdgeLabel> </y:EdgeLabel>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
<edge id="e3" source="n1" target="n6"> <edge id="e5" source="n13" target="n13">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="-13.293288949645103" sy="5.089839781332955" tx="10.518716784893627" ty="-2.5052839608284785"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:LineStyle color="#000000" type="dashed_dotted" width="2.0"/> <y:Point x="618.0" y="475.5"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/> <y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
<edge id="e4" source="n12" target="n0"> <edge id="e6" source="n29" target="n30">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="40.0" sy="0.0" tx="-70.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e5" source="n13" target="n14">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="60.0" sy="0.0" tx="-20.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e6" source="n15" target="n6">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="30.0" sy="0.0" tx="-15.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e7" source="n16" target="n7">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="40.0" sy="0.0" tx="-15.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e8" source="n2" target="n4">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/> <y:LineStyle color="#000000" type="dotted" width="3.0"/>
<y:Arrows source="none" target="standard"/> <y:Arrows source="none" target="none"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="23.10523027399745" y="7.097193251213014">&lt;html&gt;D&lt;sub&gt;24&lt;/sub&gt;&lt;/html&gt;<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
</y:EdgeLabel>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
<edge id="e9" source="n17" target="n18"> <edge id="e7" source="n31" target="n20">
<data key="d9"/> <data key="d9"/>
<data key="d10"> <data key="d10">
<y:PolyLineEdge> <y:PolyLineEdge>
<y:Path sx="60.0" sy="0.0" tx="-10.0" ty="0.0"/> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="2.0"/> <y:LineStyle color="#000000" type="dotted" width="3.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e8" source="n32" target="n17">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="3.0"/>
<y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e9" source="n33" target="n34">
<data key="d9"/>
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="dotted" width="3.0"/>
<y:Arrows source="none" target="none"/> <y:Arrows source="none" target="none"/>
<y:BendStyle smoothed="false"/> <y:BendStyle smoothed="false"/>
</y:PolyLineEdge> </y:PolyLineEdge>
</data> </data>
</edge> </edge>
</graph> </graph>
<data key="d0"> <data key="d7">
<y:Resources/> <y:Resources/>
</data> </data>
</graphml> </graphml>
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
+4
View File
@@ -1,3 +1,7 @@
\section{Hardware Model} \section{Hardware Model}
The target architecture of the work in this thesis are \emph{heterogeneous shared-memory many-core computers}. There is no universally accepted definition of \emph{many-core} yet, but normally it is assumed to mean "more cores than multi-core", usually tens or hundreds of cores. Scientific workflows feature a very high-level and abstract view of the underlying hardware. The abstract part of a workflow specification should ideally be completely devoid of any hard-ware specific details. \emph{Atomic activities} are an abstract representation of any kind of computational work, and the corresponding activity implementations which make up the concrete part of a workflow specification are supposed to be interchangeable without any preference for a specific implementation or specific hardware. Therefore, in the context of this work we use a very relaxed definition of the term \emph{many-cores} and assume it refers to a single computer featuring tens or hundreds of computational resources which can independently process computational work.
+74 -19
View File
@@ -1,47 +1,102 @@
\section{Workflow Model} \section{Workflow Model}\label{sec:workflowmodel}
The design and implementation of scientific workflows consists of two parts: an \emph{abstract part} and a \emph{concrete part}. We give a short overview of these two parts in the following subsections. The design and implementation of a \emph{scientific workflow} consists of two parts: an \emph{abstract part} and a \emph{concrete part}. We give an overview of these two parts in the following subsections.
\begin{figure}{ht} \subsection{Workflow Design: The Abstract Part}
\begin{figure}[ht]
\centering \centering
\includegraphics[width=.5\textwidth]{./background/figures/workflow-abstractpart.pdf} \includegraphics[width=.8\textwidth]{./background/figures/workflow-abstractpart.pdf}
\caption{An abstract part of a scientific workflow.} \caption{An abstract part of a scientific workflow.}
\label{fig:dag} \label{fig:dag}
\end{figure} \end{figure}
\subsection{Workflow design: the abstract part} The \emph{abstract part} of a scientific workflow specification comprises a hardware and middleware agnostic (and therefore easily portable) description of the workflow structure, the activities involved, and the data and control flow dependencies between the activities. The individual activities are treated as black-boxes such that only the input and the output signatures are known.
The abstract part (see Figure~\ref{fig:dag}) of a scientific workflow specification comprises a hardware and middleware agnostic (and therefore easily portable) description of the workflow structure, the activities involved (identified by a unique name and a type), and the data and control flow dependencies between the activities. The individual activities are treated as black-boxes such that only the input and the output signatures are known.
There are usually two different types of workflow activities: We define the structure of a Scientific Workflow $W$ as a \emph{Directed Acyclic Graph (DAG)} (see Figure~\ref{fig:dag}):
\begin{enumerate} $W=(A, D, P_{in}, P_{out})$, where $A$ represents workflow activities, $D$ represents the dependencies between activities, $P_{in}$ represents the workflow's \emph{Data In-Ports} which define the input signature of the workflow, and $P_{out}$ represents the workflow's \emph{Data Out-Ports} which define the output signature of the workflow
\item \emph{Atomic activities} are basic indivisible computations units such as a legacy codes;
\item \emph{Composite activities} combine several fine granular workflow activities, including atomic and other composite ones, to form coarse granular activities and impose a control flow on the contained inner activities. There are usually two different types of workflow activities $A$:
\end{enumerate}
Typical composite activities are sequential and parallel loops, conditional activities, and sub-workflows. An \emph{Atomic Activitity} $A_i=(N, P_{in}, P_{out}, T_A)$ is a basic indivisible unit of computational work which consists of an unique name $N$, data in-ports $P_{in}$, data out-ports $P_{out}$ and an \emph{Atomic Activitity Type} $T_A$.
A \emph{Composite Activity} $A_j=(N, P_{in}, P_{out}, T_C, W_{Sub}, C)$ consists of an unique name $N$, \emph{Data In-Ports} $P_{in}$, \emph{Data Out-Ports} $P_{out}$ and a \emph{Composite Activitity Type} $T_C$, and contains one or more sub-workflows $W_{Sub}=(A_{Sub}, D_{Sub})$ with activities $A_{Sub}$ and dependencies $D_{Sub}$, onto which it imposes an activity type dependend control-flow. $C$ denotes activity type specific parameters, e.g. for a for-loop activity $C=(Start, Stop, Step)$ denotes the initial value, the stop condition value and the stride of the loop counter. Typical composite activity types are sequential and parallel loops, conditional activities, and sub-workflows.
\subsection{Workflow implementation: the concrete part} A \emph{data dependency} $D_{ij}$ between workflow activities $A_i$ and $A_j$ is defined as:
\[D_{ij}=\left(P^i_{out_m}, P^j_{in_n}, Data_{ij}\right),\] where $Data_{ij}$ denotes the data exchanged between data out-port $P^i_{out_m}$ of activity $A_i$ and data in-port $P^j_{in_n}$ of activity $A_j$.
A \emph{control-flow dependency} $D_{ij}$ between workflow activities $A_i$ and $A_j$ is defined as:
\[D_{ij}=\left(A_i, A_j\right),\] which imposes a constraint on $A_j$ so that it can only be executed after $A_j$ has finished execution.
\subsection{Workflow Implementation: The Concrete Part}
The concrete part of a workflow contains the hardware and middleware-dependent implementations of the atomic activities and their accompanying meta-information. This part is often highly specific to each individual workflow system and the underlying DCI. It usually contains information about the available activity implementations, locations where they are installed, how they can be executed, and any other further information indented to help the workflow engine in selecting the most appropriate activity implementation. The concrete part of a workflow contains the hardware and middleware-dependent implementations of the atomic activities and their accompanying meta-information. This part is often highly specific to each individual workflow system and the underlying DCI. It usually contains information about the available activity implementations, locations where they are installed, how they can be executed, and any other further information indented to help the workflow engine in selecting the most appropriate activity implementation.
In our workflow model we define the implementation $W_{Impl}$ of a workflow as a mapping \[W_{Impl}: T_A \rightarrow (A_{Impl}, I_{Meta})\] from atomic activity types to one or more tuples consisting of an \emph{Atomic Activity Implementations} $A_{Impl}$, which is the actual executable code, and accompanying meta information $I_{Meta}$. The meta information contains information needed by the scheduler for selecting an appropriate actvitity implementation, and by the execution subsystem for executing the activity implementation.
\subsection{Workflow enactment} \subsection{Workflow Management System}
A workflow engine executes a workflow instance (operation usually called \emph{workflow enactment}) by traversing the DAG representing the workflow structure, determining the state of the individual activities, transferring data from finished activities to their successors in the dependency graph, unrolling composite activities and replacing them with the resulting subgraph, and delegating the actual execution of atomic activities to the scheduling and execution subsystems.
The software used for setting-up, managing, executing and monitoring workflows is called \emph{Workflow Management System} (WfMS). A WfMS usually covers all aspects of a workflow, from creating to execution, and consists of several components.
\begin{figure}[ht]
\centering
\includegraphics[width=\textwidth,keepaspectratio=true]{./background/figures/workflow-managementsystem.pdf}
\caption{Architecture of a Scientific Workflow Management System.}
\label{fig:background-wfms}
\end{figure}
Figure \ref{fig:background-wfms} shows the architecture of a typical scientific WfMS for Grid and Cloud computing. It consists of the following core components:
\begin{description}
\item[Engine:] Responsible for executing the abstract part of a workflow, also called \emph{Workflow Enactment} (see Section \ref{sec:background-workflowenactment}).
\item[Scheduler:] Responsible for mapping atomic activities to computing resources and selecting an approbriate activity implementation, also called \emph{Workflow Scheduling} (see Section \ref{sec:background-workflowscheduling}).
\item[Execution Layer:] Keeps track of the available computing resources, manages the actual execution of activity implementations, and provides a unified interface for the scheduler and the individual execution sub-systems representing different hardware and middleware.
\end{description}
Furthermore, a WfMS may also contain following optional components:
\begin{description}
\item[User Interface:] Interface which allows a user to interact with the workflow systems to, for example, create a workflow, start it, monitor its execution and retrieve the final results.
\item[Prediction Service:] Predicts execution and data transfer times to aid the scheduler with scheduling the workflow. Some scheduling algorithms only work when a reliable prediction service is present.
\item[Monitoring/Logging Service:] Collects log messages and other information and presents them to the user, writes it into a log file or a data base for future use by e.g. the scheduler.
\end{description}
\subsection{Workflow Enactment}\label{sec:background-workflowenactment}
A workflow engine executes a workflow instance (operation usually called \emph{Workflow Enactment}) by traversing the DAG representing the workflow structure, determining the state of the individual activities, transferring data from finished activities to their successors in the dependency graph, unrolling composite activities and replacing them with the resulting subgraph, and delegating the actual execution of atomic activities to the scheduling and execution subsystems.
We call the resulting DAG where composite activities have been replaced with their contained subgraphs enriched with additional state information a \emph{Workflow Execution Plan} (WEP). We call the resulting DAG where composite activities have been replaced with their contained subgraphs enriched with additional state information a \emph{Workflow Execution Plan} (WEP).
We distinguish between two types of workflow enactment modes: We distinguish between two types of workflow enactment modes:
\begin{itemize} \begin{itemize}
\item In \emph{early enactment mode} the engine re-evaluates the WEP as soon as there are activity state changes, and tries to complete it as early as possible. This mode usually comes with a much higher overhead, but results in a more complete WEP comprising more information, which allows the scheduler to better plan the workflow execution on the underlying resources; \item In \emph{early enactment mode} the engine re-evaluates the WEP as soon as there are activity state changes, and tries to complete it as early as possible. This mode usually comes with a much higher overhead, but results in a more complete WEP comprising more information, which allows the scheduler to better plan the workflow execution on the underlying resources;
\item In \emph{late enactment mode} (also called \emph{lazy evaluation mode}) the engine only re-evaluates and completes the WEP when it is absolutely necessary for the workflow enactment, and only partially completes it as far as it is required for continuing the enactment. \item In \emph{late enactment mode} (also called \emph{lazy evaluation mode}) the engine only re-evaluates and completes the WEP when it is absolutely necessary for the workflow enactment, and only partially completes it as far as it is required for continuing the enactment. This mode has less overhead, but also results in a less complete WEP with less information available for the scheduler to plan the workflow execution.
\end{itemize} \end{itemize}
\subsection{Workflow scheduling}
Scheduling describes the process of mapping atomic activities to available computing resources where they are executed. A concrete mapping of activities to computing resources is called \emph{workflow schedule}. The scheduler usually tries to optimize the schedule by maximising or minimizing a given utility function, typically the overall execution time.
To be able to produce an optimal mapping the scheduler need to know the resource requirements of an individual activity in advance. We assume in this paper that the scheduler has accurate knowledge of the resources required by an individual activity, but in practice obtaining this knowledge is still a steep challenge. \subsection{Workflow Scheduling}\label{sec:background-workflowscheduling}
Scheduling describes the process of mapping atomic activities $A=\left(A_1, A_2, ..., A_m\right)$ to available computing resources $R=\left(R_1, R_2, ..., R_n\right)$ where they are executed.
The resulting mapping \[S: A \rightarrow R,\] is called \emph{workflow schedule}.
The scheduler usually tries to optimize the workflow schedule by maximising or minimizing a given utility function, typically the overall execution time. Some scheduler implementations take more than one objective into account, some of which may conflict with other objectives. This is called \emph{multi-objective optimization}.
To be able to produce an optimal mapping the scheduler need to know the resource requirements of an individual activity in advance. In this thesis we assume that the scheduler gets accurate knowledge of the resources required by an individual activity on a specific computing ressource from a third-party \emph{prediction service} we tread as black-box in the following. In practice obtaining this knowledge is still a steep challenge and subject to ongoing research.
Existing scheduling algorithms can be broadly divided into two categories~\cite{Wieczorek2009}: Existing scheduling algorithms can be broadly divided into two categories~\cite{Wieczorek2009}:
\begin{itemize} \begin{itemize}
\item \emph{Just-in-time scheduling algorithms} only consider the next activities to be scheduled when deciding on a mapping and ignore the rest of the WEP. They are usually linear in complexity with the number of activities (i.e. $O(N)$) and come with a low overhead, but due to limited information the generated schedule may not be that good; \item \emph{Just-in-time scheduling algorithms} only consider the next activities to be scheduled when deciding on a mapping and ignore the rest of the WEP. They are usually linear in complexity with the number of activities (i.e. $O(N)$) and come with a low overhead, but due to limited information the generated schedule may not be that good;
\item \emph{Full-ahead scheduling algorithms} use the entire WEP when deciding on a mapping and try to find an optimal schedule in the search space. They usually come with a much higher overhead, but consider more workflow information and therefore, produce in general better results. Generating a full-ahead schedule is an NP-hard problem~\cite{ullman1975np} and therefore, most existing full-ahead scheduling algorithms are approximate heuristic algorithms~\cite{heft02}. \item \emph{Full-ahead scheduling algorithms} use the entire WEP when deciding on a mapping and try to find an optimal schedule in the search space. They usually come with a much higher overhead, but consider more workflow information and therefore, produce in general better results. Generating a full-ahead schedule is an NP-hard problem~\cite{ullman1975np} and therefore, most existing full-ahead scheduling algorithms are approximate heuristic algorithms~\cite{heft02}.
\end{itemize} \end{itemize}
\subsection{Parallelism in Workflows}
The most predominant form of parallelism found in scientific workflows is \emph{task parallelism} which means that different independent computational tasks operating on the same or different data are executed at the same time on different computing resources. On a conceptual level a scientific workflow is basically a collection of tasks with dependency relationships between them. The dependency relationships determine which tasks can be executed in parallel, and the scheduler distributes the tasks among the available computing resources so that a pre-set scheduling goal is satisfied.
Other forms of parallelism like e.g. data parallelism can exist in workflows but are usually hidden away in atomic activity implementations which are considered black-boxes. A scientific workflow system can account for that fact by assuming that an atomic activity implementation may need more than one resource for execution.
+37
View File
@@ -185,3 +185,40 @@
Publisher = {IEEE} Publisher = {IEEE}
} }
@Article{bacon1994compiler,
title={Compiler transformations for high-performance computing},
author={Bacon, David F and Graham, Susan L and Sharp, Oliver J},
journal={ACM Computing Surveys (CSUR)},
volume={26},
number={4},
pages={345--420},
year={1994},
publisher={ACM}
}
@article{cotton2003rams,
title={RAMS 2001: Current status and future directions},
author={Cotton, William R and Pielke Sr, RA and Walko, RL and Liston, GE and Tremback, CJ and Jiang, H and McAnelly, RL and Harrington, JY and Nicholls, ME and Carrio, GG and others},
journal={Meteorology and Atmospheric Physics},
volume={82},
number={1},
pages={5--29},
year={2003},
publisher={Springer}
}
@article{altschul1990basic,
title={Basic local alignment search tool},
author={Altschul, Stephen F and Gish, Warren and Miller, Webb and Myers, Eugene W and Lipman, David J},
journal={Journal of molecular biology},
volume={215},
number={3},
pages={403--410},
year={1990},
publisher={Elsevier}
}
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+424
View File
@@ -0,0 +1,424 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20160929172959+02'00')
/ModDate (D:20160929172959+02'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
GauHqbDp/GEnn=BU4/cEpjNW7&n!s,aTIN^!dr=eb)i_)#L&"F,e8(UHnE/')4^!ElU<.aq-l)s?X`p-
&KZFN`s59=puCuCf>%?3hY@&M"T6a=QXbC'ldt_C?bcU:orl.0kBbH=r0OU:qs2#;O2(Y6gFM[;s8(KB
J,bjbr"]8(q]C;m/cOr5O5G8]c$S@*C%G(]dH:HDL&Y(Gs$,=%nr&==ioZ/jnSr3so_db<Mk7]NA\[VL
hnO3uYNprsruk/'O$E3qL\&So^]):R[mC"CG4U&>rj/@255skoT[\\pl.>B%?=eeN4C=fD7Fp?B^LD(&
3POXSTNYJO)Y<qO^N(/5lh?ePJ#KR+j8D>lc+2\.?YLeb0O??\l])liXnDRHoGZchm(-]fa(OS9i2*KN
V=TKA)R\FGZr]rkro)6bN;)ekVNH(,^\Pc@"[DVp56tm'X<fIN?6SniHLgk>5Lc(j_cVD;kJ!n&@![Mj
$-1g4\$(giFKWqkd`4frKPcm8V)6t6_CKeY4fmB<9:-gr1[Be]WR6=RDEmXXGWMtpN`YJ9Datlb%#[eo
bZo6lNGKJL+7&V'=AiV_6Q?TdeJS&RYPSQ!TD_-([G"3RZnAFEGsoN^g4>aiVB#kWOgl-4a&$/3<d4'3
'UhDEhHq!;E3Aq,3(kNe6Z3LWH5CqE%uG3HlgFg)M]"/"S!,n`j?J%J5NI2(';*Gnk,8Hfg;ko3N^4_I
73fD],+$8CK:hID!qti:O@mJ&26-<iUfn0F\nDW2(,Xakl[!uE`n.UU2h0j<3T8_$(>`A(=VIshbj.!?
2Y2M;i+BIY#P9usU7<<;ecR(P01j=QF(Q\?-Jt$Nl[;fJU+Ng):^F6S_1JYl-DUNi*_tnc6.dYq?Ge#q
)"4A=]TjCCYc#TgCK*p:R<<Ir`1(72Wp>Et2tR"L"-OTFR'@<j2<?Nl7agrsU$TQ#Ibd64C<nPf!1Oga
91#<M9*FMT&D>kp1qS([VtU_eI$.n'heCl/.4njt2jO%<GXrIo*r5?D@iQ+-&H>^VXo4>;#'[a;A\]u5
@87N:@qr*/QtOO]!7k?j.ckc1JWNS=`9hQh_Ki:;Nl&0mVo,7kj6`n`Mu<J<Mcu3.hR3m@G27%#BU7?#
94ddBhOZY:g"5hiZ5UopAJ8.rG!WO,/E>>`ce$\':Tm7PA,^XJ/tB+`\uKTX\oWPRP(.8]Xe3C,hrfbX
IVD@ec1ACdWiIt+jMqd(Q&P82JUEn/!42I-&EZ/9XZH9*rIBBKEMorE0kTD3Fc"0'n<4<]2;Hf)jm1&u
35B*C&PA)Z%iFeL*NHeM+YHn#31#YErJ9%,<ZM(+0Q#s_51H"13`-3!aR!ZjmInGk%d%j4_[hO>p;i::
P#)#=Y]3R;eXfXA\XJi&m,=D6p;?Q,4n@WgH`jN,aImm_Sf]p6n5@mp2I"TB_]rHnC&QCJfs>P3'$Hl)
$aN?NY-&Q4I-1!OO@f?6Zkt%FDoX!MoC^Z'23PRg)qnO[5B&g]dl(G.m<^bef57sAgMAKgg\4rAha5&\
\,5DYR=7d1%`^P9hfMlQ*d$RMNQZ:aHR=45LYBjA=e*-R#h%pbEQ@P0IH91m`f=igeT>Nt=B>lk7UIj.
^,:4AD[EmB?U*Ur2#;eYdX4V4#R9!t;<4r'%f`["LREVj5V&nj5:cnMW53IJ/[q&^bf_WU#H,;?AjKi5
,+)rX;0b7dn`kN@_'*]O[S>pGbb*#/eNd4mD`@:/I^nMNm"5')LGOFO,K0Bkf6Dlud)DN@rkl$h8B!I%
=`tBN]Eh90/2d#\/r]iUD[cnh?S4l!HcVM;$,'\53q;tdj53Kf[E9)!Mib]Is#\J0(g61uA[(<BMhKW>
!e9>1LXg+&jo0nW0an9AW9#N]CN%$M+M'A*i?rLb@i;?5#<53=K5!YUQ=ZL[^h(5;^`mJ!$OBEN,B^gK
,7.dWXkr_IRR9nal&>39?sfPFdkK,am1L]Cl:`ZsbRo)H-GqBO$IQR7io1?]ZJ&D9]5"^.H'l[&?i2&u
EihD)hiI;glms-[e[bd><KMiqg?OB!+!<iOK_)HVD'b!Y;125'd8Qh,K.GGB=^(D,+UX-FpE)(0&5---
/OP!F5]bN;)-]lg<_<,\"2RUgkV70[G$<4d%HKS*^._mgN%/TUj6g`r4Q)Sj/iHMrAY+:QW=[DZr0.k3
NUt&@08\(\P^pH*Z&^RYBf)3]a'd(3:[6;o8W(1n(A9C$<Z5tTI=6NdaD?CUj4&]5/RdX'1hUoW^uZMA
=11*)kCPffP:imr?-c0TLbn:F>%]$t2d7>o*L'iN-u_LN/H9b\q\uLWr<kG``!t';N3?ap-\T5S?c$r2
`3N%-5O;4b&i"do4'q8\id'Ppgc0GkG)P4^\*1#&n;l.qoRbP,ZfC.\XHA)k0-j+rKNr%@/Vm^Ud%\^P
%1lNVH#ZYk1,6U>lO/*Gn4TCg#!>UOZ/rMi3'#`5Kuf@8,7+[fLZ+Uo0Bp&Q@)rF1e8golmXobe.1n-=
eJOQS-qT@.:3L$XBlL5)D7oXSbt61bF!Uo"3#H_;YY@d#QDpib5<(<Kccal<*9W`u9>e-BUGqsolMfjB
^"l"4HnWuZ*<&s9r\Wp;fP&,c`sSTNr\Y9@:li=L#(>M:3-4>0#'B].Q!OoQ9O]N=8#FBd0a9)13Cgij
U.>!A+c])#feFh2S:RaQi@+UN7Y$_4"D#rXJp^)XB$$+1Et2)aa)T^XmE*=K2=C2k$MC>Ui2_f3n7nI]
#V%h>$%;e>]PM3#el+]A37I-=b_L?k2,6K9i0r^UIQZkQ3=bX(n6N9]^4C?;4309PH`L.lkrKY;1H8Q$
=G's=NX/oY(H4&G''Gf:3Q#&X/5*+pqu^j^!/B+mj9'TD.?),49OZ5]^4mM+BA>BO=rm)-2o#jReRB<Z
qD.o>jH#DN:O7O='6IkH:6+9b_r*Q;9?&PjNCKo:6=\B>L09qgH;55>99W46(uU=A()esj/".Dj.BJi3
$I\u]rZIg%Fs+sGQQ,^eTuK+7H\o@K6H<m>6(%>B8VA/H5]m+RR79#:OX)k$_9p,f'b[Q\Ig`&@cBuGK
GKUhf/El;5<*0t*"^T8/>sI618BN,ifNm3\416"Xb!%L'GC,(B:,.`)fV2CbZu%Nj"2BTSYNG)D(>:nt
H.JKlLgEQK(!_/_7D5maQd[&PAlr<2Hf557KdIKT7OniC0\7O_@BSH3k7"'1\,Ls\E&5r(5Vq\o4:6!]
>RSD)oTr;]*mH2s":mAT[]+sGBY+[+Hnt/@6I%El/GouiXB5$7NpS59HtP.3HgKS8%_Wr(j>]V_(5nP"
jP+\Kp!k>6$Xn74>/B9WWma&>K'j1eV4<qM_7%Er=:ob5`S*H4N[\CW[6'pGoPckq8G-XW*6fBsYanCs
n#MOAh*^RsLaI6^Bh*8i,Te9c^t<Z#K+qo&9g_*Ap4ErfGIf6C^/,F98OgK9DquZ)(qYqn^^a5(qMDDN
9egs=*Im@_9#)T%*2s4D[<#@IY;tU#coIBOLVr0a\_r3``FO3uh3!KC%I^7l_$I&N$HdZ[9V(/)H:$m%
91D&,#A;9GlDQ)%N[FJ^(hT"R.i0KCjP%Fl$u>)K91T".k7C70Nq,`P@um+3Ddp41"Mi#Z$(/],kZeop
-\r6PgPMUGN6nAW%Z?ui">(*THOsF`R`EbEeZm$T:Kl+S#@G^h>'918FSUKef:U^UJq!_]p8I8mBK8nI
*`H>m[WY!;E$BYuLajBJ"oaGJV:4f$e:m':qs)TDUNn[2Y&)?1R-N=6WHbi\&#HEn[I$L7g/PtPKBjhs
D)o\2NugaoP-(`4Wahq1#.O5sGgk+/J&`T`I?"b])9]iJ*U-qhSe%1e5gm'%rX0H4BhA?11p?7k8H4BO
Y'IciJmJ(sJODV%/!g61qBKl4bE;d[;l&@"+(5NH)l16B/c?4BHe4HE]C]G97dlZBl`4$/.&;?D2&BN3
(T[\',Q/#*i,GLl_3VrH=OM\mU];I3Ik_VWV*F1.LJ.Z$5]N"V"jso1Ud*GrCYi.ElXtD*&"86!Ud'05
O\!-oan(\f5=j3EOXJi(P5Y\RqE*LYr<ibt378mj%)o&-`_Pe>d_B0i+s6'1n!;q\J"]&M=:Q<k0<Kh\
iEVpOp6,DDY0N@4F`F]f%j:g$`+aAYn&V??i@Y!=L@h[#@c*tGZQIVXrWc*M5N`8abkb#E<`@DH\E2[9
e[]f&%0^AirR]e_QQc<cS5>FKc;?4m*P8Z`hqY92i/P<&&h\3Dl!L)ba-$A:2'(q20P)Z(*A7<4<T-LK
dO=f`qA7,-:N%miHnpU-+fRmZ0)tRfE+s>5iLM]AaD_S6)'-o^TI3C3;9k+d>K+:Y[rFY!d,'`^XF@rg
L+On8knkL\2^h&S>dfC?Zd36YPQ1%Md)e9*k9t^JB=9$IiHRAB*UgP/cAnjiNSul=="\Y!(G7gX\mP2m
p$$qcqtjc'Zp6r4;'Ft[PT9"I[LPgTp:R#9(g(uD8g4`nR/<AkX,Y(PmsiC0,`37T_Y]>YC\<-$nTfcT
J&dU/6EXX5SFtEM\dBN?lMc!T]7qKCdPb(=M3T>2[iBYZ<MpPh_mhBn+hpW0U+V-dRetY+)SnjJ$<W]Z
U(4\N;$WnI/*&S8[G#/9[i4-Ei<S449o`e!"81k-"%_`K>%[o^`L!!C6Ld#gH7SG\+r<5GEtsg#?Xb58
g0%i>I#Z?tjnT!s,N^ur*1=>'eT*uuNYQX=C-2=u'\`p(-3j**FI:X<5HER)TcKmSXXTk%^)A+XI@UBe
m:?Rq8f78@@]Q3UJ)IA/o+g:)QA\08%G]TO=9*#+g>Q8Eo*R+T([YI54d8<g?ig+"AR8j-]qc--C>$'k
3N::k<s>@kF;EuiQP=8;S.gW=(E7lMa^M=tXs9KF,I$rWN@9-1kN3UL,4j&T9BsL6:MXL]i?qP"i[<\B
3].c9MQM-eDHdSOO5i;`,c`hgENZ<##^t!ZB4!mVHXrRRbdFAU*#-1XJ-SrbFEjcp(14_-B]6MUN%5L$
9bD@Z3WW0D67C\"(8+2$c7kLGFmg?H`-9,oM5Q?,@2L#[Ya&e'*h`i/>"\o<nQ]@Am[LAPKhMh7"-3,"
'68DJi$4X6q>5^RD96S7BPGMLFF;rT/>2VK]6!'-^LMI5%u(Z!<44"X<9%sDJQm.b'$*`jhV2joj@B@8
EaL]U&HU"-jH/*>2=->KT8i80i]HbQ+119Q,SP2EY,duXQQlg$kA_af+'L5Ap^d/H1-]?S@<W]`A"sTX
Ut+CHcbXJ'7:Kj:-1q$9P\CfQ`!"XH$ITP#,/of/@5.m]U(]JF]'r&BlqN>C/9=+*ULn;\#=J1eBj%Lb
\/Ro"5gpHMTl.g.;f_+qM99AC9AX:7>l3f\?.P3lW9_-[HH:JBGbZIEb:'<bn%=_t@nEN^q!5e>W?i[@
(_Hiq%C[<9)JVZ-@>h&COGg@"rb@@7M/iKB2.;o0#]31qUS8V.dn%sQ^-i)L8IS,`+Jge5XO5sbVT[ce
?96t@J`t<@&?nj>.%I8,359Ll81iLOZh5ncQ$A1QjJmFt'WE>&!MXe^Y/<e=Em%R7*6h1_@QJ:U=(R^@
bCS]POL4cmUTBm;"5?Y\V*OmCHY1RD]U`s/Zqe=S$Et6-]:oj0S@fbRS\Wb[a""<,I7rBQ>CgBn-nAno
\g+_4]+$2MrY!d[A^7n^5u[op7nL1'cWX/kHD`'Nes#sAOiDCLF#DAu%ugLL9')4pi+KU<@=4GqYjCeU
r1LK([Za%B-;b+mp\&D9rcQu0#jbf>AA[!TMe(TpEFX6sp\j2rB)t32:DjE)'TXVq2n!ZfV1e3.H9A1i
rE=(GHt&(-:0_[oY<)tE<@$\]3'KI&<9D*q6Qb<i'?`3s_k4]YV\VtMrNh_j[g`G]%$Wp5QR\<(:;@CM
7M#9jMRD*]jgA"pmQ"+uX+YQ%^+<6nN)(QJr[?][?AnB1!!.oq&b%T`"+CL@]nfC.^^olciro;,L/:%k
#;gWq%t+cC"T6p(GQN=!/)]Sm!C*6^"+EN+G80NK0$OKI5]L_6+P#HXp]6_$?e&<o/a1nq>,"m0%m:bV
?NlN:2/Us)'^u39j>SRHG;')I:,`@S5W?l*['?[9$8(0@,]=Cu5CDYN:;QCB&,;j;q=qK.c!,+<CAD,*
jtY<mDW)=J06go.F7b&#)Uee;N]c64GR+-VVQ=S*1b@RO=u?4;RC]ZJW5nh_N9TI\.,`,X/<2a%d0"h_
P,erbOY`^:r.+WMmW"9XJ=g<^nF=d%`gr]k=[%c3Xa.\mW6Q(G,9A5jG;*l>4_k'_j/O-h,M,?pplQf)
hVPW4P]#S_DL'[Ye'8an&kVi4j."mW;/UaGote_bj84#Z2,Kbi1E'@WjH)?l)L[+YWWoKn,[CM5EipU)
pH2SP=87-cj/[l3eQ_**.E_s;^=\WAGP:cW2RIs6ajT#iAQ!l%4jf_3l/ug@%/)'tX$>I1*aa$sW^Sjp
229"b)]qGK*o(6r]VBCgs#[s8Ya8G(QBd!<:+Adtdq19c!u*C?Zg^O983PAP1-Mq)dV_e&FBXFrlLGp<
;?;k'1o=j<1lIAtVTkGc%8k:S*A+TPhn.7fb=["t\X&M2kL`t8.gBHdB!ljF9?ZtoQE@O<`hm;US!I2J
17_T\TmCS8"#cb]Ec%M[Q^.'r?7mhYe#UFaC91X_F@D8!Q<DiaNdPbmS]uKdR?dkJY@XP_WF_$+VId>3
GgeE2R"%j_K<a1Cp@'*U0rAO/VQdJPC4A;$)*$];L4O(e)V3))$W>J0]tWpqIUMPqUmC8qZoYURTrhn;
Hi9gQ2Puf)oqa3hC73q;s%U[QCbt?25;Zl57A<K!?j-@m]:I>Nf.n@l/=2Y'B9]N0d/UJ\N,d@u15<8=
!T/PL-aQsTAJX+fgfapG8h(sDQ^6<l>"6iLQ4[1=/^kG[2(aHa?G4$d5m]CUXgK2>2*C!2%F,X".jcIB
%@E(kaeEQAdfTqI@Z:)h>">5slLJK"Cb`Rm,"XeQ]luqbY;,FJ>^kTU-2Zd"_)ne@RpT9`'KmnPjMVm)
ZtQ`73-l1_eV"O\b5Z,SQ%pR>"mRLVO1B1nCJ6oVFL?qnK?iONdHa2J%<nt7Tj=s]Ocg.&PjQ`VH/OiK
8JES3*Re<mH`S>tSa0PJZ44&`:6a(%WtrhFc/Q?03E[Y1oB)P)Np2R3OZSKrY#_?AY!uVGLeYQ#e%I'`
4)$Q,ijgMSB^^R+imIbJ[h^"PjVU2fTCLP3n+`1T1L8^O]lD3,2X[*OiX4]2C#6%7noQCBF(0*!-?HR7
%G+2kRicFUF3d%sckp9KA%afN@6I]hNjKAXHt-@PM_Y2KbSqCOZ&Yfn%MI@E(sdH/OeJrh%\JX=psi&$
>*).c:naDY>iEN4Q(1jne$HcQ>K(\T6c8/oZ-r<mVY5`ZLHs,bd*,Zt:lCNKl)9Th@Nj6EPMG/f2:Kas
^r1G\ZZ9EtY"Q"I0T3&@Gku3Pr=qF4FCLRs,u72!4V=Du5\=.FVcsnf_9uMhR.YFBbtjtO@53(+[lCI-
%$]jr6,UtB;Hf"#Po8@%2G/+(m3+EM<)q)MB%#1TBX]t>_:bcY9i<Z^G@m?5N$9hfFuoCGgT8>8`f4SV
WE+OQI.ugm,p[$&>$_LAL+T<R[cYk#8?`u7I"XK"Kd5%Ur(07;A&,>1'A/M7CLHVeR0`Ld_q$#Yo%Dm7
Ru+@#Ou7'\:okcQ+_+1SIr2h:4UX!>bs-0@H2FH44`CMb%3oY]!-*lMMkL`*VS@?91G>9fD<*MVge4F)
6?DX&_bc#6do%5!Bh*lU$M@fq:$>LXCSD82^&VTJ6`9)SeG['RN2(lt=D!7qlYhRAJ)QlGb+p]u@Wr;2
C(qiB';IPlI?ID97(&s8gc3b[F+_/rSQG=dI82_qDVS?dmnLL>&?^EL&1ss=]B0SOh(^B]%j5WKA%.fg
oCRh5l`GZZr4iNV72)\=jCom`El5s]_:U;rX]Z(>9KOAo^E_(#U5.AOpAkE^,,Ht87&JAFL:+G+1#*8q
c&n[8*Mq-o,mWNCBr>!BTbQ!Cd;#US#s&a0@N,OB2Mp'QY/V=TA6'*6hl^"]3rsK2!S(lY'lH><`a4q)
ah5t3*Tr-fdq.R5>aON"h\]8t$".LX&H^nr]`QP[UQ(^/PB`La5[^uT7C<OcaH67N@IgIaNta2[!:d`n
GI'2N?1$<#G`$$!D!J]1R=#d??)]gRCur%,>St7XQQFp%F7[kYEELCZ\SpJl%jdFZ[_`j]Jk0"B"<5U[
3RpNe1rqKJ4A_7naOY]u2=]:XG7N*O>fP?gKn`dI/P*iNf1*AkBF:*_JO2@K^AGeh:'j)*Q#C-$-Q#]o
/5ZdC"Oau?A%$J3GTAOiHMoCmV/i4e/`W34HVS9E'DZ/d.f)aLhfSQ5EtpiG`YV)`m,JA0Ap1@dHS;4:
(DgNGQ[$,F)kc2PS=&!HTJ:t3R.RcpI?G(Kj0'CP&'_@K(Y4l8MChc2;^>RW2`aeCC/A?J"<rY3fl2[0
R6/t@=#gcua*e.A'"g/*J#9p^;*H=`=fV>4O`]CBY,OIkM]L$P3F&UZTqqB_NST*i6`CeXG,>j-^B4K^
aeLakIP<m?(7-V\a<BZ.@5EeAmAeDQV@Z4!UnU5D]JjWO(H)G?V9QYu&2l*/?Gg#Ir44Ud4IMU&DJMY[
s7?@F/3Wlt+.aL/+_MEAB8f680`%"D[n^Q):]`[*(b]B>bUE9ABoY/C%4Hpg"-Kt6Q:+jh)[GmF1$D@M
a[HZ5."+!j<+t6`g_<8.j!i:<C1S*JP/K?u7ri341<ZlU]tJ,'Gs^s"m8-!EA#Z8,.;pqYObc$u3t;!3
R7;l2'BD9QGdrAV)&M`Mf:BQ8-#5;>BMR4qe?Y^]2TF1Pk=50;fZ,rT`WDbl\:.9b?o8fNMj\aCaZ[%Q
b<>JAT;r[qVN$+Xfd)f/ZYjYp+.I:<4hU%UBfW#eR5=4na-t/WbL.5jgg)_'@TTZMd`'>^Cq<^HC!i'A
QdWE*ATp[$4(X1M]T/ET.7uHhXJBK7HR=.g3Vr@ff6u1q_kl%!?g/Ma-<WO*TY?i1=N(<KSd`RGUP?RY
2%q`u3>-FeKeYiXXrfE#@>cak'pVTD,__I9)m65E<[Y"/k11HFa5f5%:>^8j8ec9-L*[%U10Q(`,3XVN
-*6QYlU0f79_HPi5$ArEB2psL;@;>jom]V9UIQJ9Du(H".`3i/>,,7,o*HAD^[TjpH^;T:1%pX`,K'C<
6LWRnqu-M<>\/'Hp:OmNcX4oU1C4p:%<UB3bXdT=7H@19/e*u.*>Dcp+i^"]$:Q%L&l!'pg?Hgn1HQVf
6\V$T8HdQ?O]0=i4.,heU,jKRWG?)\8Qt8,8^AT(P(ke92R*P0Fr>Vpn@jd@*&@U)DjoK.$+"QmOYb5I
M_9^N0=\\B["!`R^X1T(cdfCN.T%WXhA]a@n>gQ<.">K3UI`aAX>G6+*[uI.I5&,M=H4KbR5,&;Y%^A&
/=U0ZQD"h7HQ!ldbL8_+;a4>6bmf0.8g@j/[o"UbIC4(eZ=GYt=!&,>>;D\eW*IInq[-1bIkR#K/Ru,s
rPB><j9p`qbXMh4o3A\pg6:3$VImM?M13==+@@;JqGN(1llJf3"?0t54Zs,6Wp/>BR;?phb;bFCC8BmH
G$&@Ak$:g7S+)^PM:oC'n<QMc*dlligQ/dfb1gi(>TYKPBE%"?bsolq%/8:eaR\dn"pV^6d,W<T]Zb]L
\lT4+`A%S%nMKKjW>g?Hh,BX6r/%mVK\8TiJ6aMupYIWIk1=>94)Q)q8MDelW\Ao'P;cjUL9bMPk2_Op
jjNfl%q$+5$iBg86mr<,1%o(Z$[3MPqu((r190NReXI?rm8jK#pFP\[&G(P&Q<:P2ruZMW=gH>I5ep7W
a,Hl@^1%di,DuV/fQ+3Za7D"BCQe[)'F=/%iZq!EJD!R"D1F0hL)=n^ROt[JCA!Bm<Rt:,Ft`HVDXO\+
k&08@#^,6j20j0k78`5"AX)(_;4ro[dq*%RHK;l,-T3uQe])9'@/Fp>HPD:hFXCO^(D_4bLUfV1P0M',
4-CO#>*@Z4]dpCDS+e;r.\f8QNS7DoZ^HD8JLnu]7tL/AO"NB;%br%Fo@'UWR*W'G*&bg1,_`fuJXASK
.mk2s(eool2J'>Y%uULOW]TKUXkHXGY8^^>=8,5rUq:[=/.0<hW9U\Cnt\rT,j!p;e)Iu(b-B&P7R]<q
73egP5SfS\(2EDKULslBe&AmZV(lE;!(gt,`(=aME5l\Vmb!JNmG+e.ifr#)Y>&u$SrN<hYgV.'lkIt=
,0K^"?Ybjb0CkQT>`X<(Q\Enu5/".?Q'H8c5$jDcUNO<eU`gSF#Kl<l1ADl47E7#3al\schgQ6:%_pIu
_^Y%moW@*!_BT00rnG;+79$Uop%!bL[tfEK:Dh_.3KOeII88EX2XQc^]m!5lb(Z<sd:d'=2'Es2E:.e-
&be:EM>NgpgqIK,<X.ZC\UC58ZDMQkBOb&\j[4.3RSD#h8\QAmDs?1b/CuO*;Af'IMd3`;^,*.=ZWk6_
aDR]rL3p(NH?P6=*njIS]%6>9/[QarbUXSjpMh:lk!&3VAMgD"<CO4"o).^A=WAs"/m6&N:E'bX\%Bs1
^"LUcJ&fJ)#KP:tR<CuK3Fj'X4/Siq20kFYq$fn-bFs'\NW$K&a@^p!gE$>HgDf"V<A)^]Vb30Eqr%Fm
*=I2Q@Q'M/s,KqXl%pQFY_K'i`_)ISbs-KWaXD+9+"eFhm[_=ZA`V?^F_\=BNFRu>F?;nb>(gT`lU*K^
/FguO:Y%OZLSM'pG?nd',^IIm`VmC(CJe--K`Z<[n><&<s,Nl6MU/Qt%%XiIpR=0:mC!f?ml/u!n+ah.
PHWb1ZcN_I*e:H/TdhJ<YZ5'GZAR(fJ_Fh*&'AE)B%pidQ=&+eeYLi_4de.pqn5SIg/jK4][ig:[$U+:
WN1E0.;&Ij8b(g=eO9Gd>EieoG^GY-6c7Iip=4+F)73k[h]!VDh%ZCTj%3V>%V9Xca&O*0XthR-Tt&5n
dW-C1_<R7s+6"bPI?XY]pPQ@==gPD]8))gR2E0#TH>V:A^2(D:/r\#GA0.Gkcj[D]NZbN$EKqE;k7gu`
oNiT%i[Qa/?R6L//$:X[cg\#K/M8#d[Sbf,&ZhE@])qB7eeZZFUBa>HI%Dm,K@kO//9cNmWNWhS)&l/C
a&m&i=R<la.V$LY@##.B86T801liP*Y(G@5(.S_E3fiZg*o4:%kcQ^ee`'I"jNr69Xtn#jZl6,C>J')X
;I%1\oCn]u_@49>[WhCk/QP4;l5k)!A`4WiG),h3Y-r2dcU.quX#QATGrl0E=*`.oGtV;+&nT]S1SfWb
!94F1Oj\B22Br#GIPI=-1\(9Wf,@dY*+*agH+_TSDJNcs%UWAW=O&(mB5S'=g8p6&_cmVCQ&,_u'^uoN
4<DSp[P9,8D;QR?S&8Ro62s'=AJoF*d3iYUkIJ1UY-H;q(AFB2htpNB_0U5"M7;ntN5O9I?+uS8`9_lP
=D=FRk#:Fe\*$0dm<gG%Q;M3h3mrA!^/[Qt/+%_b'^k]&SU;qrDipW=[eK7P>G3\G0_])P;$=R>nal^3
P7n0>N"l<]K86Aod[]'aI]rh&q9"a?/<#&sp>^oKfLM3O'S"q>`:#[2N65k's57D#+8PHEYpAg8Rd$1P
pCB7@"tuNOXeV'WSFpQDr6W\V=DEW1ku2Y]!AKu46%acsm`R`E<K1]W^#[4Y]H')6qY<0]1ZPk05cX)G
LT0TcRO\<Lh(4*JFW(O`D6t?ZgWd69hdX:&pJK5bK82!`DkB.YBRg!-Fln`D]'C=>Ge2YXr8nN,bTet7
6Te81L#FV"L1?fOcD+[U"fg[TcZT!ndj6@KK?&#/(U-fJXhCAQ4r,V8F5[Fm/Gm<mMsH/9J'4&boaa9s
!'NPCJuT<0EtJa]qD^5E5;WcA7.kKP8nq1:pH5Xu;jMS[j]oi4X6>/"`&-;J,I[N*dp.PDiu`_0oB.hp
S3L,oW)rQ:n%NW,H&E76@DBc'q=2?[/WnG%=Sr!c"'?XlRHE-8"(k)of>KseAI3]m+[%R#4me[saepGn
N4/V0aJ%suEFMqZV^9b%9A<g/iE"]NgBBGdY9,*pgXDT.qs?Rep=D1,G2"k@G2%FKY.h<N>lsX\gDXfQ
/@i^bm@[][qs,&(BE!.N4/XC)V5>f)EU\@+qj59`^R&:G/T#(llSls%2N&!-e$+>LdLpL!![O^Ma5Jc*
Z=@U`;^XMtih3#(W4@s/e#li,6>@HCL@+q,^tD>Y127R9Nab>[;_sM+Y(S:mAj<ELToe`u6K:#j)Vd(N
2/UVLCRu"D]YOhT+,ihI;@W$Dd;2BQX+./nAphF(3J^6-^[^,riV,Y&E<!58s,CJ4DS:1S[3[bq.'Hsb
e6k:JX/ATDX!\'gbiq]]<s(LMhQQ5i=<)9F(.!7N5ZjpCTb@%DYPO5pKIHB,e!gis%(^m),\sL;o!.tp
=b[@[W+-TL^"CIj:=Wc]+[MX,ZMG4d.ULWT&sFnqfD2\1S!%Cr:Fmhp6Tj^L-#ft5;E/bf-C/?e'SJmg
*"A$AA(G0W:b18Z:r2pm>Ye6A%W/H^1QK;fG0mHpc$s5mp?9Q1",4#9c*(UY<\lpY$kZ5T#p*Y)gLng]
b$$2$p0\KNKMqkj*ef2em,N$Na9]4lL%?C+.Y]Ocj9lIZn,6!FbD&p8n3^k)#Kgdef(1>0r6heaRq\E2
T(L"Ien.d`f%Ke0WOn-f#$[1JXLO:]+P(k/\V)aAbVLMQ(TRehVJtGB-"&($q0*DRZ%SLTgBQ"d.">bV
k\Ib^X4e&>0<;&GSOUl1)FiNM(']4gIhT7kL#G'3V[<^ADF04X.mJ$Is)VVo"$$5/(<+`-r,ZpR.2YqV
hjl%"\IVK`#0M()Vs*_RI9]4"h3(L!D6dkQ?S&)8f\;d5"@;sB4o&qZs,N#Sk'up^J[7K4NDhZS3XK^r
LM9kZ]lkWl2#GA-XIa$bHPCRW0BpR,ljm-c]jmnl#OZcE"]h-5@6km0fu&3CD&I/DjI+H_&OF.[m$!G>
Yr)>o7_99>McotLAuP[CIMDo94.kK-.nf82i\_KtG+o1UQe>u4Gp,ti5?MXmC%pHRYf)aL2MNWV$!)eb
d.C8j?tQN@:U;_0=mP=@0P>T+LAf6a>XdE>A7G#5/W_gT:C_\OC%bi7YV^^V<D(!@b$;&t(>rR`\pXu9
af7eT0b8a0'SjYQVqG_SX$k&uHddCVHKK[s]tbQRggVk>Jo4"5&jr8/NB>D!nrSorAq.&5lmm:!>F6e<
QDQ6RTottC.r)G6[]7U0=BMK;>Q!]GSKa6./I&6!WF;XB%N]:l[Qa!MPt,$EP..m1",/G>ldQ#''Y]?0
;rj'J45Gkg"+2gWnQ=\T)!KW$@(f'Kp`umk^&CQ7=o?mB+-=L[lJ.[@MgW)lk2+B(rXA>t4Y9\jajX]8
#M0Xg,]tZ&M"G5QSC1jgFB)cuc][!rYo>JN(@d6Y5U=M0"nAgp`?Ok\iQfA"-WdV?:\1DiV/WP`G+'tB
+gcN[ih<`U`GTL+Z28DWGC7k7I)U<Ljk6KG?)<##H_W:MUTa]a'omKgbH\o`?=[.]XBgJ2,@%iMZ!FgG
`qJnV*fSf;-s!aJ<Zl1mh;_c>EFEdQSp`Non&;iob;dNXY$Hlkle1J#a)so6)EI*7BkI[N9O1HHp#=Rh
A=!1mS6t&GNUdWS.^e*\L8,hgBD91$IK*Zh\rQfAUguVqi'A6VqHgl,aI]>/!`9)glU!^>VX$bo6d)ie
h%o_7$3-@_CJ>me<^R(+[42J2aK2_)E&nCcWtfBXAYBc':NtRhC\[OBn6gfk*4tTc58[D]YuMDh87R?0
Zl,U[Ws`D&,c66pojQ5_;\/a+)LFQ?UJK5\V7Ed=j[O)nr.,<4E:uA;Mgt^]I+jDDh<>/&\pqDQ"-;5(
=qTlAd#hOe-et.$/k7$aS$blnc^)EfXqVN$AA]%'*4=2iACBF+".Rf8UNJ3k5oX;?W)GUIME\JJ77nh&
bAh)nR]g)RL)5<sh$YbV0m!9NbZ/edN.S5f5Djap/YNe's.GpAr#'^P(K;'ZMRXh?/$2&"^Y'@'k6pQS
NbVi4c7.@*DMPBpL\[`%.GoF?4AMDUFU,sXF[NE]"+u]o+.uqc!gbB@@Q=Z#\aaJT/1fAs:Y8F`0YQui
(+"=`=0Z-nS=bbgS"H5AJ^o3@\Q4PI@k,g!9S#<dn&4LID/(VjXfL_]dOtE0?QnO.:)?VcjRX=X-#XF:
(`V^PEc.:I;BCU[\/fF-)E+*3U:fh"DN%)B>cVFl/Qs^bbTl>UD3*eeaVfim4SKIM+(;Ju=,l)+ZnXD-
F>=XjGY*[!r32/E"@qe6R7BC:e\Y`P]$A1QWB_ubfJ%]e]-uG"&%lQN/3Hbk`YWLVj90ecYV'L[)>6#/
&=#-HL7:bV^]+b@?kn;)/eGc_jI-:M?)WU8(_$J2G%XJrYX0>n_L%]W@-EgAW:@UU78q.![''eWN`d&k
<[/ZqLhgDF#>=S7c`g.Bii'tOH_$pR9H/4iOVt)q#-'GbiD#5e!o3#fhP4ZV^Z4Zn!'J8UUD9'?J-Z/d
hMg6mRWM"A:hK#im3-3l&B;;=$:Dr*ZD3%R5>\O$7G>G8Tk_2j>qLdTm.8"B);N7t7jN&_1T1<B1+92B
;GK4:PUX,oERZ_7L39p[&7'N]m_F1up+Z+Z;.i-C#-BIi<\=H*Odc2]`k^\hKe()iOLL?o*+;[X?h2)A
!ttb0<JH6)Xh>V^ja5*,N8!l@D2>LPmARk"r!KXqKf:_bPPC&<F-W>>YSI*/ll`#Yc:Z<*<]bj?/&_P2
Vo@n:hYpu>iC;_@A67k'(09oN*RmE`5:EuQX!<U')s5rqU;q-VJSqR#a,UC?mIEuY#/FO>Nb2o\?=SeU
o=VEK1&H???9>J,e)FVDrZ:1*\29I,_alXWl.AE^q+[EM2md.VF5uk/Y%[O5#5GW5JWj[K^-sXWip;M:
F0t4%0e/;G.?;2(]B9EuIEe@Nn(GT).R"060IHCkAe@P4QAEh8NA9.7Aoqo8eQ=OGkC,)8eHXPoe-QKO
)/HW<Yg``T`1Vg8Vd\RU<4"i,oLV*b5+)aCD/>fZ`Y_uD4_`5W%TLm^X`$7_V\g#)b'L9Z6_en'mJ\M\
p0>ji0,,O*Uc$T-9/<Mb6K:(37)<_T7t&_3aS_-;V`$L=h]99cenYK4RKGHk8U79tUQB!+3Em'jMcorM
bpMFo--r>ibWW]"A,P&Aogl*BF&a+8nkERm9bd=rJE8N$2i0N%PVcqCdnhtBc>`?S7#kj/!(EVRWX\!<
*TVUPS_s"*+.=q.Z%b_FD3[Zf@2ODb`iXka)L8\u4VmddrYbUZG#gduNWNid"ri>sZJuanc0<6%E_I<l
BAj"omYT.\L'qkJ;gM;[/\3Yg&3W\.,U===k`FoIi\%T;P;r-um7drm[h;J9\`Cjh)<(35Nr'5"h>`LR
H7/-q4`A9Q[XPnepj.Sdlb;?TNEKfrgl$64C2=/5E8MZ3$Wf*)QQp%'k(7cDEOTFh=Q3FP0e:tcAKIkP
T;tNijCW2#])$9#,\k2s=,j!EL9FnmcGFd1c/6Om\;8'AS7icBrL.G'nbG<Yd>N1NEeTn.L$nnPlp:U%
Y/7%<SrIbrZ,KF=H#ZV@Mt3[qp>R'9<c%u>3hNp?[dr9LVrpV8U%@0pLZEn&:o_Qo6gl<iGr;j)1=%fi
j_%R=+rTL?@]>i;OlObiS).\))Saa^(C,>84LUW#4emXt(""`@GPdjdEs^,PYR*%b*d$@'b"=GH>b>.9
_Y#\L>gBI<Z[/kKEZQ!OUgD@%8\B>Udk]`Ab%bMNWbjGU?I%)1T;Ir2D'RZUW/fK=?J`cqR'>o<X;rL^
Qa?C^Cq\'A7CQSmrP#CZdGEP/^!-=sQX8P$o^^#ObH-9)ol;+4hJ^)tPrEN*3NM_%C#84Q`quM>f5jr\
R!LbOe&/&L=b1PXjfBKRVO%a/^!'ZIQX2RdHJ.LoH9#ckA*[],cJ3_+/%<t!E`O7Df#q26e>ARR=.ZD9
GcUkMjajL&^M<WVUmI#5J8W&*JeB$!Q](3Ye'!KS?5>_Nfs'`&&r_aJQW_#od`WT!4FG?`ad,\-]Cg2V
>mo7`XK/l(EZR,;9eWi1m+0@*f]l):-fm@X?8`;JH8tLIU'l%kOmD,QZ[Q.4,Egh7]ptRo4d]R4R!LbO
P<I1;#a\lCXL72:3O;&pmd3^V/ZVkdZQL'5s0?GSQX#7;(%CX"S#GsbVPnHn9Kmm6P"EQ$<CHI5i;M\B
m8KHSV:%<Ll@<uZeEB!&=\esL%W/]!$q=\-=#)8=nR,K=+a`kRZmi\9eNFliB;rsV`b?sZ^7#pX8W6Ok
rFq^L-WQERQ$e9GR12(/6,VgN`fSn])g>LH<!>52L?*P<4&(agMK?1*)quV3niVG4263qVbXZMbULk=-
\9iAs^D[!H$'Q*_;9X/DWp[Rc]e%XqhQ00^g>'hX<V@d7ej%9Qjuf?)C.gXX.;GElGV/?`P#aWjYGu[e
Up*\X2hMm`YoQ4j5Z*OS(Rc1^F>W??pk&ef.30YB`&<q&0<WF3PJ#&;[0#A./Tn(cfl57PcCV&@SFj@s
:*_?48+c)qC://MGC6L"qI]C=mWL@UQ$#)jTl.&+&]`U)M/)'E%s++FO6cIBfnbo9>;(BuLXNN/2UPnp
n9a3@3&-NmcqL>(WkW6qo`8"H/+3Ne90gn0N]@[1=35`u:@;jhMH2R!Fc4bj5g%a+kru@@Mc&G4ShI8(
AZk>p/i-2hrlDH)q-M%#,Th,3N3-if($6HVZ3Uo+kSmT'a##mn3RsV'C0g0fPWMaJYqcgtoe[fK)c)5U
>n2=Dm8%:p<t3mSD^S/]pR*NhCniljHKIBBTi"TTEiEf#^!9=p`T:6A;eW'sNi_QMnW9"&bgFdTE1K%7
`n@)IO)ZNp@+R*/RSFN=CmH&a=4:5]>$plDC06/Q@8S`rBaUCSJMttZ;U.W!=;jqkR-H?m9e7)Y'r,PA
S+1@_$lCaHTD[EQ(Con#%iai3@goBO';N`pIA^`^+.7aUq%&$h[Ll536X6t&Wr4ueC_rX`!FLYWO*.()
nOS($QB=NRU8^%?@YK)CJ(4BpIqEas=+>0PndO][o/!,[QCBXgO=-ES`eiU3fOMBJF[P;=nlVc(f4038
3f<#CNhecZ9[GrJVGSGqrqCTW4KAm?s4Z"Se'$=nTDM\h0-p`3Z@ADmU>tEZHlp(Nm91(%k5/44XYR>W
37=`I%Ps\l)*mUeZXWd<*#Yn#!@^dbZf2BBlBCA@g's2DoQB\1MsX#HoO6&h6uXF%7TXE`;"`MLZ,QDG
(WH(mbL_cUfKO,(FY.lT5>oM-EigOjCOi[n'<uuNBJ.FX[]]rQG&+sRLs-;IZ<5f3km2AS-2_MPkD;?p
eS*T"=F"5%FGA?4D*Y5(rkVM?.M:O,h'1cL[pqjI$El7oTBOPkfg2tL),&G9m3brn7X\EAM2CCZZYk3F
m8*.?7nUdLPnk\>`\QPs<-$RhD&tP[Kc/X+XF,ddWmOZ%19G*2`b#YtDMmg;P6'^fk^?tGdI<V$N#G`)
^PX?*@<#$4RN_>]KmbguD/B^#p1\T0[hRRuALr5,Me[sPJ['Vq?(W(.Df\@01S-!MjR7P9>^6ebck87S
,]7)^3%FAHG*A<]%8K>'-<2"#`a3bI./6h$5L)'e_"9c&\"A[krM-5.>Q:U@@7424e_lS2kR+g\D\%U\
6F"b+'f!Q&Xqh$M/K/+=\lX;[XN>HpAd2'WQ'j_7;\2f[<[4eH&?!fH!=E\eK#G5V7oCH>Qd/V!DVS%9
DS4iLeKOsm;87&7X1cNPO0R-sZ')Bbk^-h2/eY4!UK/nhT#C<*iTDJZeW>`u-V^KnK&aA^f8[g%L6]8Q
@pe>h>-s^7HeNh(j@j%9(OWXTlI(I?9A@WZ41\n2g3`K<1f2uros70eX1"72/X!Pd%basJp#]MuS''ke
-!SIZFXgDVh*]SOil@7sT,'^pruBLn/EhR",sETo=6A'ON5_TN062VkgK1r]S/$C)&iGk.-Q#eL^l3VN
man-8BH-X1?Jt1950jK1M>QF^iP@&Q+<0XD2ReZhlu-7MN_[$X.)H]Y@k:5epjADGa7"8-*M6aUjqD[e
.[?MfLqVc:\591RbDdQ!^VIB[=P_9a7U[UH,?5*&FSAf'_B.AS<]gTu'uqn875#H\^c"%\,5/UPiq]Nj
6O9;jBT(+s*]rZ$E>j1Z%I/)jG!_-]g"pors*;%,CO^r:XlS3)7"uC-:cacB,"%l=WnQA78[p!n_H.[Z
n_bF[OaE%>HpLm@dIU]RmjBU2o_F&rkI]CFms&YefeK7,fL6IL4)I1cO]g5U$Dmr8r_$harh2-6=l=BH
h:qOLFcrBY`N_2CdDEaV\-63,/VEj<[?W+p4e#Gtjihi^FS;c868oVKZ=5a_K,`[S.,DE%M9fiDdtgd>
4[So\)iYU`-!P.==tJX>gWl3B/NXe,mjNI_-^?k4/$LDL86Q/ZoK$_.Z.c]l99RENacm:d]L/h#W7&4J
Zc]q#fd9.m(tH::Bi!ND;N)^(2JoGU*N]X,"OAmuRB88.cb-I;X@cc0]k'`n,S.KBp8Mf`Jb!%o@oYU(
#4>1sC7?imId0SU\ZZN+WVH`#+k<qFX\>9W3egi>Q/r=g_$nn9gTYJJ.a)Pli[VRsYL40&>R63jke1SL
<Yca/?_V4[S`UC/LTE&<LAK^W!6"`=i.C$3'=YmY#)`4qbfrqU`aNRs>]JCU)H\lc+NLu>:6N-^HD,*1
_#kmX=B(mT0I3AY)pU!]`%dG8YDoU'P#VV1[<\#X:_fTj*.t$PUWn$<>(uaIC>S=nhu-so>;?"B-TD4/
:UJn\nNJ\/aV41Q.;"\=\]XTnTl^*])S+(6O78:N/XVUq^h<?c/l8.LEN[sZ=3KZdXP)EsA)jnh1$3]B
$L4k'qeD<8SeX1$dcM=E]'80$b4L(,i]S7DdM))N-gR@K:Me)F`-'M(HfG!iVQk,2d?1Pj`HClSY.D.k
hO<uAH/bs;[fl`(8Q(p'DJ4CV)k/3mfKA\):$U.?Dt7hT-f/A_RMXa];p.>o`gWaE'5ss)l(3-0nJq;2
dFWDaia'.@Y)5j>M0GO,FZf3>bWg#5kItI#`-XE@CqQr-.$#b4)-qD]]LUuaHK%(c*c4]cF%sqCEE/rY
?ea;L4n1FE'Db]En8V7:%J/Q'^M-q_FAI:X*k*NRjBHOuHt2cd%@\`*2mr%02sqtV;R$[h&F&I:5@$B9
h*02EkeXoT?L>Sr?cYX^-!ts<<3+aen'S4SHK$u$oQ]AV\Y@cpCA0X4^PS_m1;>]kMq%+Pc<[$Z5Upu\
g;$TP\?Rj@mdm3[0[c@P^"Ie\eV[KlFo!H2<8nn*ebm]%hlm9/?<(u>`8h1o[eajNgNt6cRo],BpU!82
<^51bEjW?FNs]unpfrC8MGrnBYg1Gr_d=4g3:Fjlc0pOj'Uo3B/1L0L\S[#rSP(DfCOWJh=jVFuc-[n7
d&Q?EC6em$o=I,UiiDmgRC;-jI`F(+D:9H(H^;h6YJ+o'h#j><2nBa+k4_JP[eOTdkGfW*,0nVO&t,fr
SZ?ZR]8b_0X4^fUSDST;H[gs`E3mg"3\?L^he96'oC7fpU/C%l;6%_g5H).h@X.Z_^1$VJ<HF1udM/7^
7BX&Kr/FG>4m%N39P6GbYNC&N%q5)Z)Rg3N@W@]B4VmcI'&PjH;=2ISc8HOkgjSj%2'+Epob#(]Dajc<
Rbnu)JA!N!FftBJ5Fq@QqDhj8CM5T?bO6DllN5\+-()W5oCVaRKsm*6AAoch7PYiioG$`Bf,&T0420rR
lh,]Oc\/pe8:8+%pV5bcNO*p.<:MKV?#*r6"WuOkR*rb(0:CT)l!DOa=0s$Hs0Qsk4Ii^%icWmcP.%KD
1NpoPM9Pb%^YlMZ+8GJCh*:084L4k]PF8_D9hb%P(7F;YS$J.L4IkNAc6i-N);Pkh?*Oq5WL<e)/3BV3
Q05I;C6@3TSOIg,YKaE?$s.#n9uS-Q1,:0eEe<_e'7R5UgDE_U>Z^X/"&:nZ=&_L6>4/H^Y`#gRN)J3d
7tue3fhM4]R:V.4jmDfdI/-<JP9L.@au]6`8'Q@t-b]JtU>h-p=O38upS<^*#U=uiE'6trRFUsccN5#f
Q\il4bJ:[!?H0N@fD<qV)8R,M:7E983fFHGQ_uC%Xd>re*Ri3e+LCb37]+37RpO*uFmJ/2qQraG:T^+R
?CmAT9(SeMUE7+-^@c[Ao"ibt#=kXc7FN/bLhbWp-bW27-.g=*MWpl@.Cd*s'2q7P:Woq6',Na^8UB%]
nsnjk;(k^G'QLg&B^=dESttU^_krc[DPibueonK.Sid%up$s(<O/60S[,[0QT$sI@=Fq$6Wt(TgjH+BB
!NA!&<Rs&d]aQa@dE=X4BZDZLDGYJhm)\k*A(SnaV3cbO`KR&oN;o`@&%7[n+7k+"6ru#UFc]ql#]AH$
1n3fBoMEprl"+7B02MTXdBk`+;E'VV^$ODE0_m'QR$Dr%0@.<E5m]Kp<]@]SVo]4nb8XA5:S'Q*H?o('
lD']^Fj9S77l9#74g^;5d@;/AAI%#aapZSG]=HU-\fA'*TtJp0>9A:DOQS5$DQQFAM(<Hmne;eU?c(N;
M\M*5X+n^$!s1\_bHadp+3-o7dN_mkSCMBo^SB=24#:)X@[sBqrEI:HYEt3cWEX!="D:7?XhGUB8EFh]
'j$Lj)q9'o]o"]befc%#1Xn?aQCVO9kO:DFS\Q4iIZ_T>5'`<VChhT7Cgf:ZDHp5KqKcV/TM*ASm%TZF
Iko1W1f^n(=a!R=,$AYj;_?;`A*;^MO)3?lk;MU_@Q@5/'[&L+;(UlW`N>Z^4GnjLNHVIJo7gEb9)N;*
OrN6T0P&jf8lK^fDQFRfQ=Y:0YS6S\41";O9nSR6s3C,?`2sbA-aHqacYPR^KsO9rB/#73AVX4%lEtM;
pdce!9Bnb2[asgEGAJuW@<j]X$92V@]IKHSa3'Z+DRRD2^HOBQp\m@^c>S+)a3RV@UntB`**99V-J!73
p4HC7Ng2`BW"ZSKG7TfSSC`jIOoXfsl[1;J(>h?DQo>Ho]2%WpTBh[Z).u1U2c,g2SK]qCA_HTiW2fD!
3nLDgg=<aE0A2jm>b<C?8N/Q8@Rp`6*ZJiHd5P*lS`?l:eEoto=a']Q.B+j[[N]/O3jS,)_?'j9_V,M.
da#pCs0*qYUR$.R_pj-8^7!a%Z+aacJ1W7]P^)m+2T`:m7<$S)>8N^l%_8"6NCR#kT'9iLO*)k'o8L#M
O3_e^-R`K#=dGUg=`QX@NUs%$fl/aY7JP!2i>SOL2+:ts41%$5XKfeEL#OJBXXVTqG+L<e\D9=\1$WP=
dck4P3$l=a10Gl6C!@o8.nsSjo=`!%]:F19$(mC+6^.3NG&LrS#3QoF>"s!Am5rQD+_99r4,P8+otAdg
LpA0:G=8YPao&C:O'l+6ej&2:or$0KCFoA!rH1K4A^ZPU<Q_TL<T/Qu)gdmD`0oDN:EI\YQ5rFf\M>YW
^`A(qeQL0WRmqgbqqoT&He+,S7YR#+rXH1"h@'.$YJh/s8$C5dr-GX6XC*8!@B"q;#?Mc**=HHdMBde)
-+qAC/6@uqL++kd)jZ:GWb56YGS*!iHgE!m'X21e3`A=`'Zq!(]b!EMdH@_+\#&?!_,*]%,XT[#T(aE3
5P:Sd"V#%n'Gq=](t=t_DC=s20V.m6i$qCo2AXNkW2O[gKdlILjq0:p;r\M:C(.ho^-rc16S"64ds.Yg
>0(eg#+X(iSmF6RkS1^G8n^\`i491G2?I0)F0oV:"bF4fg?&Z($$qs(]i[$,_nV)%2!N7#@3"l$mH#a/
n'0tpp@R>T(>+!)$S)u=<ZnY/^(9As166:OH?WbdZ]_)/au+e6<Kp];$Xn7h]h"]s]D"YQMI*1?2D+0^
:P+JZc,DpMWEP`'EE>Xro+=*mFsAMeG%()XA(Ht-Rjr]\L_mUO]C.YS+M7g_>:=r)cKaQWY&]e4<1*P4
BKu-"&m^0Bc'H48Me6HLMK1HIU,RMe-iI1$a-Lo'YW7]FW1$#/,*6@qD=6B(olfJ(?gY,[.U9qZWXuZG
@T%pHLXf?r6/Pi$mT%HTNLT)hC3HdjDDl,J.i'u@J[p3s_VJD;HH(s'D(Lj'iJ;WZg8L$e0,Sk>E1?I?
J;rs.&F1S@!DaHF_dZq%%t)cje:r4oS6H;fQ5f]?]?/ED9Xk#eh#EDH:-,s?*9_!tPM7d9GfXuqZa*Dq
Rfd*=:G&inM4-m?8dGR>3.ne&@)XR"A;]$IW-a5rMQgT9$d!^3g@A%3S"lq92[?Tcd\J/:eRInfQ?oCg
oWDYL)`oY4K)NV_9>CKI#F,dINX\I9Ti]M,!@rP-*j7:m@qqDDiC3#>0#FSC;,pDr@$0hJp'\^pUX<1h
WTB+Zi-cBSZDH_pd=C=i%<n%Y6E@@k[J[u"90*sTM5Om#n%uEsrlD*8gk=7'(`D&\K-U)H70i302QuHV
$j`7*I7O$4Rs.R*hNVNsoqEs0*Br^]b%HuQCb-RsI5&-;0ta$5$;K00[$PAn[8A[$pnH5JcVYUXdP2TH
3$RHa'i%hm@&A9t4d9Rrq,"eJBmJJSPKOHKWL-rL)#=k%/IsBqKYFX9Dn$PRg"0$#.lAuJ$s^577QC!1
iHZsqn^:f&0u)FF+3nEf6@k@UR>d#)V7TF@nLSt/LQ1$%=4m<S953DsfOXQmh-/KIGH&cigQo[JlsIts
=[af"?":+0_BtI*[dUNi;>pYU),+6-2uJcZd8"t2RCr'=,K8G6CiX.Fs,Kf#?PpZr[(fd"RItsMOibDF
\4jo/@WABj>!EsSZ5p('=%@>"bfqm,aQ/=T-M,pM1)VKW.Ej\U*//],-(h6Hn!l/$-m"ehnYSa(fg_ec
hR'Zehf8.+cM,t9*?t)1Zs!a:(*J)W2H<^TTbm.4dTC:OLFVUKT#AZq-!TZ?>0X^+*HfrF?Oa(sdrZR:
R,TQ4#"#M9Or1-Z8c,3L!(5WUP&P7`$qKi_@3$g;k0#;`Qr8KQ$uPHHh_FC)[>EE`!mA8FSQ]*m:<Q!$
96H.7]o0eAJ]R].a&fLf/c2QH<2VWWesC6h<(:7pASl>f`<0;b6Jc!<)'rGP]4MY[.a^pq:TF6>ds8C7
bUP:F/H&"TaG<\.6>WEp[9r-]Fbcp+m:m@8l58(he_Xsq9G(F9Toj(gS,IqP32L2<=2?XS<6NB;K@G9I
i]+8@:%[*V]oJ8tG[@4m[e[FYc"C\=Y$A`AZgf.ORb,qI1G%r3LB3AqorUfa`$4H^\afJR=0u$SWU_sD
iO?&d)Uq;Ia/MDX8UCO+<)2d)Ea9<gX!mE3&m<'=SitQc$YPMq=iQZZp!bfg--)b1e'QKdZ+GAniLk&l
ZlM*=QeAC)hT+GgK;^\D6e5p>PmL3k5bK`nc92m<,TW8J8,RL>mB\u9MG@b^%.1JYIF*@+@2D^*hJ7<S
P<Xcf8bFG7[Fq]d4\1j\@O2>o2qYf@adZT1#,+$e.R$MGb>UL18'N_(oetXuS]E97S--[#mF%q@ZoDF$
Fd<cWQkdQmPH7Jr"_^t@e'+<@OH_u<ogl+EF#CKLkH7%M(<"J2TA62"jl`:@WJK05ajs=O%C^>dP4O]V
bj%O7`L+693<*b!oYIgC*qM`T`p=.P)#WO[`o<A\Hakq%f>tii_76si5+1#%`C#q,.N.T?@9D8!3GrXj
o8+\B9b8',I%5M(R)\qh'#\P5D%)G`VS+7C^f=udpkWOG7H1@O:N(/TW/=Z+onPZ//gH=H_KDgT]ANXK
07%:!e[XHa'BQl(Ge_)_J&h:&kA+=/gr9te=UNSfDjKU&Fp\TB]h#:lQ_RI&Z%R.Eh3L!=9]p0@prV*k
4j;XnalPBu3p!G?Gf-F\Wq-1M0h6lT.UUE"a&oui>1K<kbsV+ISuWL9[LGAUVj(MXWYl[sXF-sDN`,DA
C\N1r_i*:A1,!NTal(sNa]-n;G=eK;3^'P#JB`B+3KoD2;:h[JB3lQ.)NAf<FkuE*F/Mtls1r^,&Sq:3
:1GPR77M9Hf(<u9NdKO7\Z3fHQq+09eF_g>J(OV;h"RBr?0b&uYI]q8`V$'")FuOAN/+_3ZAsE!HJ.V[
82$aHajIaI?^CX<pMeYmeX#E(a9+9DJoSJ/bh<Y]Pi-`"/IRp^PJ(F(cW`%=m_s4[N%4Vod`X[Bbk6"u
]!qI>UbQ/$=XP%+]mR'Vo"j,M<a9DKeS:c]k'FT%"BEpoV24-Z]OgDum/-#3]WZY2XUpmA[L+rbFHTr_
aZ5W72ro:q"LnB,QQ8^P45K6b117Rt/uj51HF[-`c@,J/$("sNWWm9c)(0bNc!+0GGKYVJ<b(cSD_2lF
-Y0&ml/a+42SG&Q96&9T8$81!]3]Ysa.N*mXTqR#D)2*W?9[!kp='?Hl^.#14F.kiGViDLOrhWF`FnIT
:,)+tWM7A>FPS<Z*51^kol)X4@cOPU8M?DUgJ<Er,e)<Vn$k1l+h`9-*UhV#f#udtHLru&DTa5Q[@Q12
[*VQ!Rrc5HFbo1?:14Z>Z?H\e*7Jml]@B>OLIJnNO?<plMc>W$HolKdfQtK,=64"5*ZdtZ/[<glfcWMP
Bd[;P2pT*cEebAm[5OEfd+&%>j/aTUQ>p$Tlpo(?QUR9e,0H,Z3aT75f<en_!EGN9:!91O<*ddeXP?(]
3kWer7&aSWOAV'RoVUBm/@HA9C,Y,!rbXNnYI;_67>[h.bb`,A<jQmc/ZoDDp;o0`XXRe]DcVG1`m28#
+'H:o8%ha03)=)VjIKcp^2\%"Od41,g!2(MgW/jEl?50.p0;G?dDj?,0KV3Hg*X.O&5N,0HOUM."NO5,
/_QV\>-kumr<Ooh79>QrhK.p9=#>8?/=@3L)HXi5XW=Nu>rpO4N&_g5esbFpNYN4**@^Snd]W=d7j&u9
n!IaYl:mONceX%oN3`\-`GX#X+4Y6aIuB"(^CMr73n:>AaTU`,W`G3Ve8EYC2K#8t0<6('7CK)F'rm-Q
fhb+S^MOUHjr7jukj':b.dFENH$G\44;I8SPQQgaAc#5#<6#7XeF7aWC(gL'b'E?`q0/"'TIA;XaZ/Wi
DBoN@.&o0T=u[mEb?+AmJD>U<FD<CS5I==`<]+_#]3="MC[]+#.69cVeB7J9Ccp4ak&m`M<]M'/nftb9
d`/hEh5W:!g-68$_l>MW2jPcAD3-hJ.[Hp=VCN,5c$IdRE*1%rC9ng?eN_%$RY$G\9$+'(J%)X!pL>/=
`!O+:-,5i'P1:C*+<V^Z#$M6$5K1@c,iOraUhR$*Rt_8R):r\@]4qckI7G$N&\U#"r/N#1+fcbW]aRnC
27HiXYFL*R2f;AlJ#m`r;ld5!gqqH+\Ja,Mcu&/?.K^BOX_%^@=JkdKB^[+PJXEG(ClE/"V,8>preLEG
J,X!aDM?-'5Q:HR]l*lE?iTV&^AdN'ruOE(p)h&dT5OO5J,Aj+s726N\SjW\fU/Yqi0P'Y+m^6(D<U<#
rq`7f`W,l%IfhE4/j'~>
endstream
endobj
7 0 obj
25535
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 400.00 201.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000026286 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000026262 00000 n
0000026740 00000 n
0000026456 00000 n
0000026495 00000 n
0000026597 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
26813
%%EOF
BIN
View File
Binary file not shown.
Binary file not shown.
+17 -65
View File
@@ -1,5 +1,5 @@
\section{Experiments}\label{sec:experiments} \section{Experiments}\label{sec:mwreexperiments}
The purpose of our experiments is twofold. We first compare in Section~\ref{sec:exp-overhead} the perfomance and overhead of our workflow engine with two related state-of-the-art workflow systems. The purpose of our experiments is twofold. We first compare in Section~\ref{sec:exp-overhead} the perfomance and overhead of our workflow engine with two related state-of-the-art workflow systems.
Second, we evaluate in Section~\ref{sec:exp-performance} the overhead of workflow execution with full-ahead scheduling to find out how well full-ahead scheduling performs on shared-memory manycore computers which exhibit completely different characteristics than DCIs. Second, we evaluate in Section~\ref{sec:exp-performance} the overhead of workflow execution with full-ahead scheduling to find out how well full-ahead scheduling performs on shared-memory manycore computers which exhibit completely different characteristics than DCIs.
@@ -12,14 +12,8 @@ We conducted all the experiments on a multi-core system with four Intel Xeon E7-
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\begin{subfigure}[b]{0.48\textwidth} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Povray-Runtime.tex}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Povray-Runtime.tex}} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Povray-Memory.tex}
\caption{Enactment time.}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Povray-Memory.tex}}
\caption{Memory utilisation.}
\end{subfigure}
\caption{Experimental results for the POV-Ray workflow.} \caption{Experimental results for the POV-Ray workflow.}
\label{fig:ex-povray-results} \label{fig:ex-povray-results}
\end{figure} \end{figure}
@@ -65,14 +59,8 @@ RainCloud is a meteorological workflow for weather simulation in mountainous reg
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\begin{subfigure}[b]{0.48\textwidth} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Raincloud-Runtime.tex}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Raincloud-Runtime.tex}} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Raincloud-Memory.tex}
\caption{Enactment time.}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Raincloud-Memory.tex}}
\caption{Memory utilisation.}
\end{subfigure}
\caption{Experimental results for the RainCloud workflow.} \caption{Experimental results for the RainCloud workflow.}
\label{fig:ex-raincloud-results} \label{fig:ex-raincloud-results}
\end{figure} \end{figure}
@@ -103,14 +91,8 @@ In this experiment we cannot directly compare ASKALON to the rest because ASKALO
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\begin{subfigure}[b]{0.48\textwidth} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Montage-Runtime.tex}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Montage-Runtime.tex}} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Montage-Memory.tex}
\caption{Enactment time.}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Montage-Memory.tex}}
\caption{Memory utilisation.}
\end{subfigure}
\caption{Experimental results for the Montage workflow.} \caption{Experimental results for the Montage workflow.}
\label{fig:ex-montage-results} \label{fig:ex-montage-results}
\end{figure} \end{figure}
@@ -131,44 +113,20 @@ The Sparselu workflow (see Figure~\ref{fig:ex-sparselu}) adapted from the \textt
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\begin{subfigure}[b]{0.48\textwidth} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Sparselu-For-1-Runtime.tex}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-For-1-Runtime.tex}} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Sparselu-For-1-Memory.tex}\qquad
\caption{Enactment time (\texttt{For-Length}).} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Sparselu-For-2-Runtime.tex}
\end{subfigure} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Sparselu-For-2-Memory.tex}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-For-1-Memory.tex}}
\caption{Memory utilisation (\texttt{For-Length}).}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-For-2-Runtime.tex}}
\caption{Enactment time (\texttt{For-Width}).}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-For-2-Memory.tex}}
\caption{Memory utilisation (\texttt{For-Width}).}
\end{subfigure}
\caption{Experimental results for the \texttt{For} variant of the Sparselu workflow.} \caption{Experimental results for the \texttt{For} variant of the Sparselu workflow.}
\label{fig:ex-Sparselu-for-results} \label{fig:ex-Sparselu-for-results}
\end{figure} \end{figure}
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\begin{subfigure}[b]{0.48\textwidth} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Sparselu-While-1-Runtime.tex}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-While-1-Runtime.tex}} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Sparselu-While-1-Memory.tex}\qquad
\caption{Enactment time (\texttt{While-Length}).} \subfloattex{Enactment time.}{0.48\columnwidth}{./mwre/figures/Sparselu-While-2-Runtime.tex}
\end{subfigure} \subfloattex{Memory utilisation.}{0.48\columnwidth}{./mwre/figures/Sparselu-While-2-Memory.tex}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-While-1-Memory.tex}}
\caption{Memory utilisation (\texttt{While-Length}).}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-While-2-Runtime.tex}}
\caption{Enactment time (\texttt{While-Width}).}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Sparselu-While-2-Memory.tex}}
\caption{Memory utilisation (\texttt{While-Width}).}
\end{subfigure}
\caption{Experimental results for the \texttt{While} variant of the Sparselu workflow.} \caption{Experimental results for the \texttt{While} variant of the Sparselu workflow.}
\label{fig:ex-Sparselu-while-results} \label{fig:ex-Sparselu-while-results}
\end{figure} \end{figure}
@@ -234,14 +192,8 @@ We generated three different workflows for each parameter combination, recorded
\begin{figure}[t!] \begin{figure}[t!]
\centering \centering
\begin{subfigure}[b]{\textwidth} \subfloattex{HEFT.}{\columnwidth}{./mwre/figures/Scheduler01-Times-HEFT.tex}\qquad
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Scheduler01-Times-HEFT.tex}} \subfloattex{MCT.}{\columnwidth}{./mwre/figures/Scheduler01-Times-JIT.tex}
\caption{HEFT.}
\end{subfigure}
\begin{subfigure}[b]{\textwidth}
\resizebox{\columnwidth}{!}{ \input{./mwre/figures/Scheduler01-Times-JIT.tex}}
\caption{MCT.}
\end{subfigure}
\caption{Cumulative time analysis of HEFT and MCT.} \caption{Cumulative time analysis of HEFT and MCT.}
\label{fig:ex-scheduling-results} \label{fig:ex-scheduling-results}
\end{figure} \end{figure}
+1 -1
View File
@@ -1,5 +1,5 @@
\chapter{Manycore Workflow Runtime Engine (MWRE)} \chapter{Manycore Workflow Runtime Engine}
\input{mwre/mwre-architecture} \input{mwre/mwre-architecture}
+175 -100
View File
@@ -4,7 +4,7 @@ img_extIsRegExp=false
img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif
kileprversion=2 kileprversion=2
kileversion=2.1.3 kileversion=2.1.3
lastDocument=mwre/mwre-evaluation.tex lastDocument=background/workflowmodel.tex
masterDocument= masterDocument=
name=PhD Thesis name=PhD Thesis
pkg_extIsRegExp=false pkg_extIsRegExp=false
@@ -44,6 +44,13 @@ Highlighting=BibTeX
Indentation Mode=normal Indentation Mode=normal
Mode=BibTeX Mode=BibTeX
[document-settings,item:conclusion/conclusion-main.tex]
Bookmarks=
Encoding=UTF-8
Highlighting=LaTeX
Indentation Mode=normal
Mode=LaTeX
[document-settings,item:introduction/introduction-main.tex] [document-settings,item:introduction/introduction-main.tex]
Bookmarks= Bookmarks=
Encoding=UTF-8 Encoding=UTF-8
@@ -86,6 +93,13 @@ Highlighting=LaTeX
Indentation Mode=normal Indentation Mode=normal
Mode=LaTeX Mode=LaTeX
[document-settings,item:scheduling/scheduling-main.tex]
Bookmarks=
Encoding=UTF-8
Highlighting=LaTeX
Indentation Mode=normal
Mode=LaTeX
[document-settings,item:thesis.tex] [document-settings,item:thesis.tex]
Bookmarks= Bookmarks=
Encoding=UTF-8 Encoding=UTF-8
@@ -100,6 +114,20 @@ Highlighting=LaTeX
Indentation Mode=normal Indentation Mode=normal
Mode=LaTeX Mode=LaTeX
[document-settings,item:wepevaluation/wepevaluation-main.tex]
Bookmarks=
Encoding=UTF-8
Highlighting=LaTeX
Indentation Mode=normal
Mode=LaTeX
[document-settings,item:workflowtransformations/workflowtransformations-evaluation.tex]
Bookmarks=
Encoding=UTF-8
Highlighting=LaTeX
Indentation Mode=normal
Mode=LaTeX
[document-settings,item:workflowtransformations/workflowtransformations-main.tex] [document-settings,item:workflowtransformations/workflowtransformations-main.tex]
Bookmarks= Bookmarks=
Encoding=UTF-8 Encoding=UTF-8
@@ -114,49 +142,26 @@ Highlighting=LaTeX
Indentation Mode=normal Indentation Mode=normal
Mode=LaTeX Mode=LaTeX
[document-settings,item:workflowtranslation/workflowtranslation-main.tex]
Bookmarks=
Encoding=UTF-8
Highlighting=LaTeX
Indentation Mode=normal
Mode=LaTeX
[item:background/background-main.tex] [item:background/background-main.tex]
archive=true archive=true
column=31 column=31
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=5
mode=LaTeX
open=true
order=2
[item:background/hardwaremodel.tex]
archive=true
column=0
encoding=UTF-8
highlight=LaTeX
line=3 line=3
mode=LaTeX mode=LaTeX
open=true open=true
order=5 order=0
[item:background/workflowmodel.tex] [item:background/figures/workflow-managementsystem.pdf]
archive=true archive=true
column=18 column=4
encoding=UTF-8
highlight=LaTeX
line=5
mode=LaTeX
open=false
order=-1
[item:biblio.bib]
archive=true
column=0
encoding=UTF-8
highlight=BibTeX
line=186
mode=BibTeX
open=true
order=7
[item:conclusion/conclusion-main.tex]
archive=true
column=7536750
encoding= encoding=
highlight= highlight=
line=0 line=0
@@ -164,6 +169,46 @@ mode=
open=false open=false
order=-1 order=-1
[item:background/hardwaremodel.tex]
archive=true
column=0
encoding=UTF-8
highlight=LaTeX
line=4
mode=LaTeX
open=true
order=2
[item:background/workflowmodel.tex]
archive=true
column=188
encoding=UTF-8
highlight=LaTeX
line=63
mode=LaTeX
open=true
order=1
[item:biblio.bib]
archive=true
column=0
encoding=UTF-8
highlight=BibTeX
line=224
mode=BibTeX
open=false
order=10
[item:conclusion/conclusion-main.tex]
archive=true
column=0
encoding=UTF-8
highlight=LaTeX
line=0
mode=LaTeX
open=false
order=8
[item:introduction/introduction-main.tex] [item:introduction/introduction-main.tex]
archive=true archive=true
column=0 column=0
@@ -179,50 +224,50 @@ archive=true
column=0 column=0
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=1 line=80
mode=LaTeX mode=LaTeX
open=true open=false
order=4 order=12
[item:mwre/mwre-enactment.tex] [item:mwre/mwre-enactment.tex]
archive=true archive=true
column=0 column=0
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=7 line=93
mode=LaTeX mode=LaTeX
open=true open=false
order=6 order=4
[item:mwre/mwre-evaluation.tex] [item:mwre/mwre-evaluation.tex]
archive=true archive=true
column=0 column=36
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=14 line=1
mode=LaTeX mode=LaTeX
open=true open=false
order=9 order=4
[item:mwre/mwre-main.tex] [item:mwre/mwre-main.tex]
archive=true archive=true
column=0 column=0
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=2 line=9
mode=LaTeX mode=LaTeX
open=true open=false
order=3 order=1
[item:mwre/mwre-source-to-source-compiler.tex] [item:mwre/mwre-source-to-source-compiler.tex]
archive=true archive=true
column=40 column=14
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=25 line=65
mode=LaTeX mode=LaTeX
open=true open=false
order=8 order=5
[item:mwre/povray.inspire] [item:mwre/povray.inspire]
archive=true archive=true
@@ -247,22 +292,22 @@ order=-1
[item:scheduling/scheduling-main.tex] [item:scheduling/scheduling-main.tex]
archive=true archive=true
column=0 column=0
encoding= encoding=UTF-8
highlight= highlight=LaTeX
line=0 line=0
mode= mode=LaTeX
open=false open=false
order=-1 order=-1
[item:thesis.tex] [item:thesis.tex]
archive=true archive=true
column=1 column=24
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=20 line=93
mode=LaTeX mode=LaTeX
open=true open=true
order=0 order=3
[item:titlepage.tex] [item:titlepage.tex]
archive=true archive=true
@@ -271,28 +316,28 @@ encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=6 line=6
mode=LaTeX mode=LaTeX
open=true open=false
order=1 order=1
[item:wepevaluation/wepevaluation-main.tex] [item:wepevaluation/wepevaluation-main.tex]
archive=true archive=true
column=0 column=0
encoding= encoding=UTF-8
highlight= highlight=LaTeX
line=0 line=0
mode= mode=LaTeX
open=false open=false
order=-1 order=-1
[item:workflowtransformations/workflowtransformations-evaluation.tex] [item:workflowtransformations/workflowtransformations-evaluation.tex]
archive=true archive=true
column=0 column=95
encoding= encoding=UTF-8
highlight= highlight=LaTeX
line=0 line=7
mode= mode=LaTeX
open=false open=false
order=-1 order=11
[item:workflowtransformations/workflowtransformations-main.tex] [item:workflowtransformations/workflowtransformations-main.tex]
archive=true archive=true
@@ -301,52 +346,58 @@ encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=6 line=6
mode=LaTeX mode=LaTeX
open=true open=false
order=10 order=2
[item:workflowtransformations/workflowtransformations-transformations.tex] [item:workflowtransformations/workflowtransformations-transformations.tex]
archive=true archive=true
column=0 column=346
encoding=UTF-8 encoding=UTF-8
highlight=LaTeX highlight=LaTeX
line=38 line=20
mode=LaTeX mode=LaTeX
open=true open=false
order=11 order=3
[item:workflowtranslation/workflowtranslation-main.tex] [item:workflowtranslation/workflowtranslation-main.tex]
archive=true archive=true
column=0 column=0
encoding= encoding=UTF-8
highlight= highlight=LaTeX
line=0 line=0
mode= mode=LaTeX
open=false open=false
order=-1 order=-1
[view-settings,view=0,item:background/background-main.tex] [view-settings,view=0,item:background/background-main.tex]
CursorColumn=31 CursorColumn=31
CursorLine=5 CursorLine=3
JumpList= JumpList=
ViMarks=.,5,30,[,5,7,],5,30 ViMarks=.,5,30,[,5,7,],5,30
[view-settings,view=0,item:background/hardwaremodel.tex] [view-settings,view=0,item:background/hardwaremodel.tex]
CursorColumn=0 CursorColumn=0
CursorLine=3 CursorLine=4
JumpList= JumpList=
ViMarks=.,1,22,[,1,9,],1,22 ViMarks=.,4,0,[,4,0,],4,0
[view-settings,view=0,item:background/workflowmodel.tex] [view-settings,view=0,item:background/workflowmodel.tex]
CursorColumn=18 CursorColumn=188
CursorLine=5 CursorLine=63
JumpList= JumpList=
ViMarks=.,5,15,[,5,15,],5,15 ViMarks=.,63,187,[,63,166,],63,187
[view-settings,view=0,item:biblio.bib] [view-settings,view=0,item:biblio.bib]
CursorColumn=0 CursorColumn=0
CursorLine=186 CursorLine=224
JumpList= JumpList=
ViMarks=.,185,1,[,151,0,],-1,-1 ViMarks=.,223,0,[,224,0,],-1,-1
[view-settings,view=0,item:conclusion/conclusion-main.tex]
CursorColumn=0
CursorLine=0
JumpList=
ViMarks=
[view-settings,view=0,item:introduction/introduction-main.tex] [view-settings,view=0,item:introduction/introduction-main.tex]
CursorColumn=0 CursorColumn=0
@@ -356,39 +407,45 @@ ViMarks=
[view-settings,view=0,item:mwre/mwre-architecture.tex] [view-settings,view=0,item:mwre/mwre-architecture.tex]
CursorColumn=0 CursorColumn=0
CursorLine=1 CursorLine=80
JumpList= JumpList=
ViMarks=.,1,0,[,1,0,],1,0 ViMarks=.,1,0,[,1,0,],1,0
[view-settings,view=0,item:mwre/mwre-enactment.tex] [view-settings,view=0,item:mwre/mwre-enactment.tex]
CursorColumn=0 CursorColumn=0
CursorLine=7 CursorLine=93
JumpList= JumpList=
ViMarks=.,157,571,[,157,571,],157,571 ViMarks=.,93,2,[,93,2,],93,2
[view-settings,view=0,item:mwre/mwre-evaluation.tex] [view-settings,view=0,item:mwre/mwre-evaluation.tex]
CursorColumn=0 CursorColumn=36
CursorLine=14 CursorLine=1
JumpList= JumpList=
ViMarks=.,241,38,[,241,38,],241,51 ViMarks=.,1,36,[,1,36,],1,36
[view-settings,view=0,item:mwre/mwre-main.tex] [view-settings,view=0,item:mwre/mwre-main.tex]
CursorColumn=0 CursorColumn=0
CursorLine=2 CursorLine=9
JumpList= JumpList=
ViMarks=.,9,26,[,9,17,],9,26 ViMarks=.,9,0,[,9,0,],9,0
[view-settings,view=0,item:mwre/mwre-source-to-source-compiler.tex] [view-settings,view=0,item:mwre/mwre-source-to-source-compiler.tex]
CursorColumn=40 CursorColumn=14
CursorLine=25 CursorLine=65
JumpList= JumpList=
ViMarks=.,25,39,[,25,35,],25,39 ViMarks=.,25,39,[,25,35,],25,39
[view-settings,view=0,item:thesis.tex] [view-settings,view=0,item:scheduling/scheduling-main.tex]
CursorColumn=1 CursorColumn=0
CursorLine=20 CursorLine=0
JumpList= JumpList=
ViMarks=.,20,0,[,20,0,],20,0 ViMarks=
[view-settings,view=0,item:thesis.tex]
CursorColumn=24
CursorLine=93
JumpList=
ViMarks=.,93,23,[,93,23,],93,23
[view-settings,view=0,item:titlepage.tex] [view-settings,view=0,item:titlepage.tex]
CursorColumn=0 CursorColumn=0
@@ -396,14 +453,32 @@ CursorLine=6
JumpList= JumpList=
ViMarks= ViMarks=
[view-settings,view=0,item:wepevaluation/wepevaluation-main.tex]
CursorColumn=0
CursorLine=0
JumpList=
ViMarks=
[view-settings,view=0,item:workflowtransformations/workflowtransformations-evaluation.tex]
CursorColumn=95
CursorLine=7
JumpList=
ViMarks=.,0,46,[,0,46,],0,46
[view-settings,view=0,item:workflowtransformations/workflowtransformations-main.tex] [view-settings,view=0,item:workflowtransformations/workflowtransformations-main.tex]
CursorColumn=0 CursorColumn=0
CursorLine=6 CursorLine=6
JumpList= JumpList=
ViMarks=.,5,64,[,5,55,],5,64 ViMarks=.,5,0,[,5,0,],5,0
[view-settings,view=0,item:workflowtransformations/workflowtransformations-transformations.tex] [view-settings,view=0,item:workflowtransformations/workflowtransformations-transformations.tex]
CursorColumn=346
CursorLine=20
JumpList=
ViMarks=.,136,22,[,136,22,],136,46
[view-settings,view=0,item:workflowtranslation/workflowtranslation-main.tex]
CursorColumn=0 CursorColumn=0
CursorLine=38 CursorLine=0
JumpList= JumpList=
ViMarks= ViMarks=
+110 -41
View File
@@ -1,88 +1,157 @@
\documentclass[ \documentclass[
a4paper, % paper size a4paper, % paper size
11pt, % font size 11pt, % font size
% DIV=15, % used for typearea calculation %DIV=15, % used for typearea calculation
% headsepline, % add head line to border calculation %headsepline, % add head line to border calculation
oneside, % onesided document twoside, % onesided document
footnotes = multiple, % visually separate two consecutive footnotes footnotes = multiple, % visually separate two consecutive footnotes
% toc = index, % add index to table of contents %toc = index, % add index to table of contents
numbers = auto, % automatic placing of end dot in numbering numbers = auto, % automatic placing of end dot in numbering
% pagesize % used for flexibility %pagesize % used for flexibility
]{scrbook} ]{scrbook}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage[caption=false,font=footnotesize]{subfig}
\usepackage{subfig} %%% Page Layout %%%
\usepackage{wrapfig} \usepackage[
inner=4.6cm,
outer=3.7cm,
top=4.4cm,
headsep=0.8cm,
bottom=4.4cm
]{geometry}
\setlength{\parindent}{1em}
\setlength{\parskip}{0.5em}
%%% Headers and Footers %%%
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\lehead{\pagemark}
\rehead{\headmark}
\rohead{\pagemark}
\lohead{\headmark}
\lefoot{}
\rofoot{}
%%% Math packages %%%
\usepackage{amssymb}
%%% Graphics/Figures Packages %%%
\usepackage{graphicx} \usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{caption} \usepackage{caption}
%\usepackage{subcaption} \usepackage[font=footnotesize]{subfig}
\usepackage{xcolor} %\usepackage{morefloats}
%%% Listing Packages %%%
\usepackage{scrhack} % Needed to mitigate incompatibilities of the listings package with the KOMA scripts packages
\usepackage{listings} \usepackage{listings}
\usepackage{url} \usepackage{float} % Needed to prettify listings
\usepackage{morefloats} \floatstyle{ruled} % Default float style for new floats
\newfloat{listing}{tbph}{listing} % Define a new float for listings
\floatname{listing}{Listing} % Define the name to be used in captions for listings
\usepackage{float} %%% Algorithm packages %%%
\floatstyle{ruled}
\newfloat{listing}{tbph}{listing}
\floatname{listing}{Listing}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=0.5pt] (char) {#1};}}
\usepackage{algorithmicx} \usepackage{algorithmicx}
\usepackage{algpseudocode} \usepackage{algpseudocode}
\usepackage{algorithm} % User defined algorithmicx block representing a struct
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\algblockx[Struct]{StructStart}{StructEnd}% \algblockx[Struct]{StructStart}{StructEnd}%
[1][structname]{\textbf{struct #1 \{}}% [1][structname]{\textbf{struct #1 \{}}%
{\textbf{\}}} {\textbf{\}}}
% We need to make \Call robust to be able to nest \Call statements
\usepackage{makerobust} \usepackage{makerobust}
\MakeRobustCommand{\Call} \MakeRobustCommand{\Call}
\usepackage{placeins}
\usepackage[binary-units=true]{siunitx} %%% Used to create a circled number %%%
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=0.5pt] (char) {#1};}}
%%% Other Packages %%%
\usepackage[binary-units=true]{siunitx} % SI-Units helper package
\usepackage{url} % Needed for declaring urls
%\usepackage{xcolor} % Sometimes it is useful to color something
%\usepackage{placeins} % Needed for \FloatBarrier
% Needed for having the table of content as pdf index
% Should usually be the very last package
\usepackage[]{hyperref}
\hypersetup{
pdftitle={Your title here},
pdfauthor={Your name here},
pdfsubject={Your subject here},
pdfkeywords={keyword1, keyword2},
bookmarksnumbered=true,
bookmarksopen=true,
bookmarksopenlevel=2,
colorlinks=false,
pdfstartview=Fit,
pdfpagemode=UseOutlines,
pdfpagelayout=TwoPageRight
}
%%% Custom Commands %%%
\newcommand*{\EmptyPage}{\newpage\null\thispagestyle{empty}\newpage} % Inserts an empty page
\newcommand*{\subfloattex}[3]{\subfloat[#1]{\resizebox{#2}{!}{\input{#3}}}} % Convenience command for putting a .tex figure into a \subfloat
% Bibliography
%\usepackage[backend=bibtex,style=numeric]{biblatex}
%\addbibresource{biblio.bib}
%%%%%% Document Start %%%%%%
\begin{document} \begin{document}
%%% Title/Preface Pages, Table of Content, etc %%%
\include{titlepage} \include{titlepage}
\cleardoublepage
\textbf{Certificate of Authorship and Originality} here
\cleardoublepage
\textbf{Abstract} here
\cleardoublepage
\textbf{Acknowledgements} here
\cleardoublepage
\tableofcontents \tableofcontents
\include{introduction/introduction-main}
%%% Real content start here %%%
%\include{introduction/introduction-main}
\include{background/background-main} \include{background/background-main}
\include{workflowtranslation/workflowtranslation-main} %\include{workflowtranslation/workflowtranslation-main}
\include{mwre/mwre-main} %\include{mwre/mwre-main}
\include{scheduling/scheduling-main} %\include{scheduling/scheduling-main}
\include{wepevaluation/wepevaluation-main} %\include{wepevaluation/wepevaluation-main}
\include{workflowtransformations/workflowtransformations-main} %\include{workflowtransformations/workflowtransformations-main}
\include{conclusion/conclusion-main} %\include{conclusion/conclusion-main}
%%% Bibliography %%%
\bibliographystyle{abbrv} \bibliographystyle{abbrv}
\bibliography{biblio} \bibliography{biblio}
\end{document} \end{document}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,314 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161122182447+01'00')
/ModDate (D:20161122182447+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
GauHq]<5_UEhm&L;*U]dh[`YOJ,s1OA&oDmR+oW[JKFh%b_h5#,hMJ(mC@b?G,jSaMbGJ>A25%`c9KbK
htQd>kO7sLQ3R9ckHAh(na2n;f=0>^O+Y1egF$@chF2g?qsE.QIf$lU3Ih&>?iU,[^ZFp6q6,i'm@XFV
b9-c_?iKS"rhI7.i?'.us7q/KY#!l$[f',`T=U5(rjt#b2i7Oc1B1Ws'h/..8^58kV:#4`RmWs#q"I:R
<g]0FleC4j_I&=-lb\tf'1`&Z^AX](Yn$bObPZ7rhld"OrI6u&[/Q_JqDM7M;4bXJrNXA;;;b\$gj\Vd
IAHFD[KlIIEtY>?T^efFmm!GWq+&[?Sg\l[oV50UkDt%0PtUc@>CZWbQ]jI``fIN`ng8[?8)F6?%G$ug
GG);liEcbS+)P.eir!<2Vagie+$29&)+80Ood=VD+19e2:F"%d5DE]`R4.asO>f<S?h;;T-NBIO"XU8m
/J4hU[MDB[bG0pUQs*DE\tm6>=q^Ej)GVme[@\jU>=9n6OhSHAo5smV>aTk^l@6;7D>Gt:;;Nphg:Gfr
WtW`tj<m8uf8nc`l6E<$8st!nP-?=_9-'1(1GpgX32K!bRt&XnH&9_*?J/D7l]70q]5$D,Pr&]mg-0s$
`ro<_rGSFXc<);XhPYMH0jCg1k7d,,':!*SiCIe3$T4B/ScMA=HuAl[Qn,B^j-`k,o.M\8p)#Cn*iO1T
P_l'`7iSS8[&7X'h1`MtqmmN:fnj`]hXR@SjA*)@R6Bg;[VnK\L6-UbGbhH=]eMK9:)qe$5ok4m4Oc_o
6V#Fjh\ghKPh"L+Ee2clV\rhH[i]+bj<ZDP9uNWO`7Bn"CAT58m)UF1G$@6-__S0m]q<g"n`F2%9]W80
Vk\"VlIp0ZI?ulqhU>Qk]n$K)/c'VZdqt(J/h1]jU8III]1L*cl57]X"(ibDA5S8j,P=U]-hS@ho6e+(
_WG9q8lk7in)YmQnj.)Cne)b(CL7iN_'h7;>9lR7:H-C'<jU9m5siY.Xg(i@WI8K,aH4_;VU[`BLB\,M
H0b2P1nGX<4i[#D`j<o$:<G6L3Ajtp*]r\nOdl[.QPemgp;0`U"t_G*UT(n6ib=1HeH`9t;YN=AatjpT
<Goord?p@G$IH,nN)G+(a]k%^f#MFmB;TS2]O0l*WOh1;VU9bEqUE.S+(45\iQ(it/[M9?1TMkEOYg]+
j9">@Q_@ZkFu;e:`Kne$Fa5H+@pU(a"iE]RZahM&T0=+Z%rfACH==nmTIr5Y4u;"!X6D#'Q4br;ID+Bt
MNd(`\RG>)C@cJNdQOO$(V<gVo1D]rU9X3=2$UfZ`['q<e[cZB_6GOs9c?[13AmdX[n()RWln^3.#2XY
A\kSj937uk0hWNhlKCrb,$ME`g(LQF,8d2.9@P=QXX[u&E,6c.-c8T`#C[^>\]4Qa`4oo;m#7i[[NAjO
[9k_*Ybu5pe,&^ICTao!NaB*p^@Y+DUSc2K4@A5^_/tijd]kZjP]L.Hm_N2hWE#hX1LcsLfmM1lHEc-g
l$AlijI4D^I\D%5#d28mqqWSlc7*QklD^-3J#'<]9\nZ3\*rdodQ1E(S)[4&Q8_[!HV^kSQ"K$#'+\^"
ng8,%arkW^6"=6X6uDR+baYR%6`bKIV\Z&rlaZG_@<8p)*g\f_(]A.@-6?\R)W!m<nh&Xd!3VYIiRm;F
K#1uWfkTViXD5,r*.&qN3G&la^ZX7u\i*?!Ps)H,MgWYqf;uU7>!etRrTY>I'<f-5e_gYtZ5SJZ9g$Mn
*o7$q8s_J6Rms&uJu9'W`MfbJ$[k]3m7mDPRT6aKLR06(ik`6]2t?)`NUS87\MrKWGe(G@2c4(>BWfmi
j\:#!%Y);a:j<Z1)G=p%f?2KnHP<P.c#D:-]SVu(3F>t=3nIe0IN@4JWrt38l#AW%ZOPdV%?8mCg]$2P
O+E16I`Q<*HF(:`9,]1CX8IV*0-1Aol>poI9Wb`FW^L&TISmYD@rp%jU=O_)S]9[84D\cGV`$LmnR[K\
V,tOjH16\sfP&/S+Y9oD%UYKjQfG9%1K;.nD9Yi(@J5k[_^S6H-#ljJV^&qfneTJ`9.fRkk!E$HkHhWu
?IN=]Wf8XtO:PN$Y,r#PF=:*f9@`<+^"fd<eQ($qb=ADAFo(<'gQlHh.b$g_hCYjgiZg_b*lHSeC04sp
Vh;SH+Y[LGHHIen<'OuhZ)qrAGqPumj"3O2@Fs#;G'6U+aP)NcPXO$<lIgEJcbf2qrtjW)Tjk9o@<n%f
1%"Otc59Rge1`O4So*=8qBWjbNC'Kp/JZOU%TQ,MZXZXV1M,UT>&J-B:=_A4qmY'(R?m\hCW-`'B!\T(
3O9R1It-2`=d8<Sa"p:p;5WeNjZ=@jYKHEc@aG&n^M&KL.DBtE7upGo5;bAIp%P,\\N(DP)&dXU408`>
+\FM;*\<<s:Yf,TilfShm?G6UXjt#A\qNP''_?:Ve;*bZP1?p[)/rF/Cf.&-4XB#O+n&;kLTN!QF`O\G
?V^#K:V"s7;68;)BG0.tAKUWg=h\#!YCjNL3Z#]k@9B-g>\!6m_@=N^_B#ZZ;8f;]L98Ic&J(HKVlEGH
gW(Z+/c-Hc&+96g[2JJDDEuB7FgJ_RZTf7AKC'rBcZZYKZ3B's5IV?_XKA=2a\O:A82ET[0uouGjECES
O"Rd-V;IYgnb(9gS0*/P$^:k/V,?[/=\NdB!?QZ./0b(pQLpR1cRA6]14>^5:pk_n_:i0VVP+$Z[L.3/
@r#/@^$N"J>*<@;lbu'JOg&N$V%!H3MRPa?&mAem2bLSoZXZ]OM>^ta%pD&(+%*b.`-qq[F"_:\T!i#r
#HFX;`sd3@;'saci$i#H,dr5=:nsZNqX<P[GK#.gU*in6nP#SK[+dBb>*)OMlTmH&@IKi^=>Xl?HYa_X
[&d'7Xb<'3BYBLm["\4XHC@;WBAgL!(>e*9Vi@o;?#pom@tc6O<7TT#mBamcW8=#d];;K@]@fb4'VCd:
<HA"[A&Ykt>]k&fhtB@TG-@1PHt;pD,P*ZdX%Ubd>5)dX:S(u<(Ak1D2-52*M\3Tl2T&m\dQJ8BAe+Yj
`^6<3\aY3'<te[20?/_#$TI;2jNlU$^[S40YuTNPMN%2PT+[bNBD@Cib@`#"A4n8caj1STO%=#_6i)_N
%`aN%#pl:Q=oVY@j*HG@0WZWG?Bs_gPf:Cfd^47+:6*)FPKLau7hj86;;?#),)b]*K+/74n=VV:Q(iT9
FPNn>A3(]n57ujb%;fsB'H=CX@d8KI`0-S0`i;A%()rGGBepYc$DkckF-KOlnetijqN[H,6n^"2G$-tB
Rq73dPs*\4NJ1[["Q)'-N6%+?L:a)-c+\[(Pt$\[A-iTqVl0jW^2'A72#;q2+C^[l^V3._14C4Vc@&NJ
M.E3ZNL7WaSWBX9d<r#%.CO&0B.D^tI];2VNTFo7I.1+;?$]q_BD"_:H"i9H])1g5e@:cC3U=AMME*)Q
+9hU%Is24FCcHKi<j+?GN,UrCT4<Tu1!2QtVVgEN1Z%_Q@*&%m#9mgj9,Qiad*rKQIcJ8F`s@*.8iD_l
;%</]EqFLP::1u*>j9[-ZVfkpS!Cn#Z:YtYKu"Lr6]e9R1TXEpO]j"pO-bZ[>7X0j8%Ec)I<<,AkgK$O
@eRdm8)JRHe)p\g)HEY='%p@(VaTYH`1Huf7O^>"#CQGV2bo8)VG@!uJ%JD!aDS%SThc++H`>XHON"FQ
8bX(q_Q%dUNcDd<m.XHHIauTs6:_e]Z%[gc,,\"Gbu=&;RI.CWmRgcZa][]q&uf`SSCFMd\p\:=LiV[Z
f$GNc](N,f/[t`s2=`O;=$:t28TqU__c/[FN/6o8-J'N4'_r+@kCrC$'S5>UpDHDB_X(MR$D.rqrtAb7
W,bCS7a]'91R(t95HCmehV4<n#X0#=GSlCW/kP&tkc$SGPIg5Q=6Uc5j_k*A.^$E;M#qB**K32R0@c\$
Y4oBV3^'o;M)7t4?6;UL9tjQLoqg71;so%`)B,D>[sf'CW#@O2[iKf;2=at#O51RsrXTulqdA&nTG_pb
<I#U&[i:kg\(co><O^2sm(_<B`h6,'p/mA*Of_mAj-.E![i9tZDRWio$Wq#^1bQD"(uCOH-,8eib?AQ6
DAtdNi,S8TETkjAIq#nAYJ*kUB5%N!ki,t)&(eG&T"T<ZB3<oq2d#:Qi<h_:HqBXk=jF!*r_mqFMb"*O
a5mo>Tq8X@+b*lc4[9jHR5>fC,p)2-+a7G03^%l[cAl&V<pi^^-]pid-MI(JK>jo)&^DI>["QT+.$(Q)
h*u1l/Pos(l,'nn`Qp'-X-(p*rL_s%[D$<Qb2SiO0?82NST+jG.&AH\?K]*Gq^tJ[3mX3M?his'Q)gMG
SGaod;"8K$--'*F\PSub<4o$.[,Lq^Ea`p]'RqthXbA7hh-O3As8?$+"7bNmliS<FliS`Rm&Q65@eS??
[/VDXYE&"tVT1aLYuImnYj7[6/mIW1=>L`)d1m0JAmZQQ-\dQc"8-'q"Ys[s?t8m6-F44r#."j5Ul3n2
gk+2a["I$:$2_^.KD[`sI6]l]I;J5gm%YnZfgdUtZ`dQY3jXkc%V?fj+3ZqBc,K$:8`O:R&I5WQW3u56
iYe.?q^>Asqg`E8qa,aAp&V(7;Q!#S;^Nt1ZO_BQF8en9NAsi\\sRnsNS,,8bW_=,bWb=h@eOg>6j/eO
%q]1-22cgeFnMPJkFBA.RRq-V(;$BnK%WYR#.'BS@eRLu$LCN9B'm*qI=ZYZ%lApl#IBLEAfkt$Afm"%
0`1-F)p6.d"86E8N)PX5^,i0u6.PhB/e#+>fiP)B4P3ea?-,n@0[jDbK%UAc/nQ3q`U!uVZZr,]bWaN4
/d<A9$>(A+N9D5B^R0F_?0WfFMbRnm2QR$_\Q.h=<bi/$`qQNP1f@\/V;CNqC>2m=@%P>9kJ?Keg)%(+
;O1_a!KCL\YsfJ8&%M'iFjK[@EXS@loj//@+4(:*?Q_Fg%pW):IE@RbP\Xq%;/=bXRVk"AI+nqt=CJSV
;MR'ECh2slfb[h$]J;=bZhV"YYnGT`P7M="!RH\W='&nE;pfHT*G=2NFfmAPc<"tKQte0$17`sH`U'X@
3WFo7qjnrm^!>!*-=ioak<-S7h":8kfiPYbNs\Wj;$poB+Ck*K2D5R5[/L<_R!fdjL1qTFT$0BkE\[ID
L1'_KI5@7=<Qe[PR\5Sl:[7LMN(+eR?-GLlMqJ?+kOo/5R!fd*bUZFZ0Ktho@N2WaGa9RqGMQ,r0&B:C
gu:`$F'SL^$S5*H./;B'W:#q<N*0ZL"8h?3HVD:/[$:LLSou82/KIXsAmaB6RrjS\i#8NWFg$_2>kdlS
H<IgBY-[u9N@goEK&&J,AtS$io$si_cNcY9gAQ/C$+qm&+);6r?e(iAN-XsBcA[jUn^JRari,TubeBBP
S3CZnc&p\'l'3dW>L0[tW9Idb"m3Z0e;p_WOIqLXP;3<JYM)\Z)_j>C]U4+\YM6h;f&ni\>k>u%$Z+$N
jpkuFcj45*lab<P+B+jZFbObi^;&G!PN+:]bh0Rb_"8t(7PO^ip;QB6WMjDI0;&p$^6YeV#ba0X4G2>=
P5GmaD?G+^@eR2d/e$fg:`s9#R5`M'?T^]1jYM4$U4+ioLbE@I@%1XepX^BP4oJj`6&H],5+im._3Ftg
@qb2"-ah*gfp>,kAX$u]h.k1XdJ/1`%D@UB?cd%:l*;4^ktM0R\aq$!(UFX#i;Ae]*pIZnaqe8m$Fo7\
Fm\e^n8d_e!4QA0!VKjo"Yt!?E)F1>-,#-`fB-8dRPhfQ,5M[2K%ui/k=/*AgO-/hUBgB;6;*j-Tg<u<
DuF^jj;Q5c7)8rrS.0-7Z`iUq0:71'3LG4H(S0nKGQh&!Am``)P0AWVV&b$T365-m$^\h3kL_q7caMFZ
AfpLPAm``LHRG:sNstc2"3B6G8JNVp^Pk6@AG3FdK2;:+/U+[WYfMi`g"1=b'[4;,,\]+VeJbcT3kUi.
9gN?#p-I[YbW_BNR=3S!3N:]Fd9MLi`U'?HK%UCYK@tIBeLYVLAfnbrAfoC2R!k&>"g\`<#."hR?-GL>
XTl+m,:f.0:$:<Jm"8&S0`.g-@.jchY(sek]hsF8a*t[gII-''p/1_G/Ps1u?`3#PpI)$ge:QAoEHX)6
3"CSof6$Y!bW_!<Gqo2HHSG>IC,#Md)7'j]QAaGJFP^re-tMVk;V(1kAfpn"R!fr+_<_7B(UK/ID4ad;
jc\:e/R?RaNosgD>o'4/mr/(HMm@d(+LA95l$H;(NfMqro),-T0`.<aB7nl]iJnt?qkK[NPPT>)*cML!
+4(F.?cu**%%dbecam"E5@6&!j,A#f^9q.(O(T(/>/Tpn@.qR+93--0rQp[#L(X?rOGF/.+g7I"ZSgj?
:@<9&9:i@nj\Ck,Yu]>H8Ta9bI9<LeU)L?kYkM"/Y<+CtSZV&MIts$:(RWE1U52GCjbqdsm-MF.<54Ko
]Q7F)[5;O_1U[#eGg&$A]pO5!NS0)mFtifDqQUaR]K`k>`N62<B$!h\+48'o$gbIG4)S0VpujL1?M]Y@
anP3BcB#9,"_76`^Op%E=\OoF(SH.1qc`5=f:Pp#PPeh^"Ys]IKps@PEG$[UG6qk'OP_%Ip?`3!+/C=$
liW[mZOcWY@.jWg@.p:rrJG!iZMgX\;QH0lML>KlMqQ]sp:G\@U8mTpam9CGbeCm4jF\/W^2XHk+!hD/
?g-C7I?6GmZO`uTch'O#p.V+PN/2PK"XTOa5kAIY6,mn!qg`H9qq1aQp&VRZfnXls0`-CGahiBerNm0f
04l;F%V?g:]7S]@1bNA^FVDt_l7JBOeEY$>UJr&9n%p:g?GYt1np>)9W*db4i#9g'l?OJ.n+MRjLZn':
R!jqW?-GK%N%YqIii$GGfU,CQj?pS'hfr.@>s//0jQ.D0f<<i,(_k9^6]Q1Aq\Y[6R!nH$/--.,`U'W\
nV4*g^G5U&`O_FbeW*RM`lj0>0`*F#(!Jk[cGmiiX."(Klsg_^R!h6q@eLtR[Y*6<e:ZEZPV-PiAI<#k
jUYrFgNkUO&34OlUitoA[H=a!@.l<5(<et8*6c,^`pC;kR=0WH3P?[mqn*t_p/-]Tp//\7p/1gIfn\.d
IT$"4Jhd->S\1><N,/^)0=4N%)LZ,>^?@Xgp-m:_IN6&HI8Gk/A+o_S&[TeRPIPs'estCuSE`]-3L)>r
f^asR#@)l6a-^Knq_#6<At:Pdhh@E^.DbA/HApP?;Ma#h')HFSk6`I$>Jn8p,(]+i*Drq"rW!o'+nC+j
B8Be0']Rre4XEGuW*IP1i#9g'TH7?%TG:#F[^8eEkAdO>,#q9-0LPs]6\O>$ZO\@Ci9jI>MqNl!r45da
F(^]1MqR:gkT]ofGiR/Ijo<9=#^Q0(a$'==lskG6@eMfG,qApB5+J^Sm9FV9/t<XEmD6'.g'@n,MUC?i
<a"e==B@cd@eKi+I8XpBfp@WqI`bs">.IiCM#p\<S;uOT`Krri0NP>rVkR3IX$S#9Y!QITA?e#RU`)JN
^,.u@\`6\*BTNk_qGm0r3"oABL>o5\7u3khF^m%)d:\F%hJ;]=Z:U0C^K<2Yq@nMA\T`uV`(b$ZCCiZU
./tYYUBk4kMqN=5<#M%)_<bZrp1!^rcX?H$2B9q)TR&?iJB,6"chM:%^Z6kgqmWZWpin,_+@W4=*p%`r
ao76>VaieLeu@;V8]5T]o%GL$C[t%SI\(te[JZ7N?aYUm.FG8)O(m1'fb`<<.)-YRJ^"s!rX\@=qnb]4
O;c>,`_J-u+/=>%lsmCJ\9uP[\_HMKpGB$P?]Q\a\<q\qc#,>_(!OCX@p[A.R4`(n@sD'iQMe,E6l32U
n^.MI4S_,M?!@5'Cj,[22i@%E)00=2p;8g"'Dp[8cS4.!\<q]'TNo])`_;!;LUbA1Afi3;j'q]_f5ddd
@.kbH3%nlN?t8mbpVlJ$DSb[L9u6/u=r4N+d?n>80iet35+m3Vqga*#lIOG][Ql6V^@cR>q.Ipcg@\.5
1]%RcZS+$.GdRd%#"*GGV)cFgD]8neYN)d80`/F9<K/6eW;*k#P2e'snaTSAF7iL.0`+P(@.p"QL:r9j
l.t2\@.s8e8!jja,LpeX$\(0Sif&A4r_FO0U&I!;o"Vki^W'!d]hkfrRtOu$MWW;GZ1t8/qXL\T\)tsQ
k(te#2<*#,mG8=j*,UhQo+e/>55"e9D9NF,"0sY,HZLa8Y&/rK,e3I3->V5<3U?GT(aP)T16F-XM&DWT
3r)"FF*8)6$OV;ASV"<lBm/-Xh:gB$[!7tV>E+J]MQQc=BfXUI6gU[FlI>M_ktYuUT#L7AA>c*Oc!,N>
W?6A1B\5EMdV[TB*9eg7QmYn(H#/H)5uTnn$_&b:B)!AV?!@4<I/<a.)tqj]^(o4)$--Aik\gbIHOZSH
")kqoGqa,r%MB/[R4:TI]^BA_l+uJfMB<--hojk!*2:(P.IYP0[;5ZhFN:i1QfQg]*d12(.%%8"FF]fX
X3!1<fcB't;WXTi54(\de2H,A(-]=6D>GUi?!@5'm.XIcIDap1N1cUrkUkU#Ep4A<^!5kNA+2oZ+RYU%
pqG07mM?AI2-P,\*iR`7#`a>a+,p(#%q<WhCCDq,lab8'[=)D0>=bhr$^X+F$YJX/[D<XjW<(fRh$TeD
E='!02b-[#R9b/5/Xh6<:).Fk%&R7sZ\n+gj#`n[H1>d(,G+ob06&_)2X"&OE0lP8dP8h+Rtkn2^Pr6$
B8[VITaS680uo3Adk#4>]*M2Z>!Aq)6O1-A3-Dh8ZcLlWPUa:/'gPXcJ?@]s\3L!9DH+6-b%ZO?Top/!
Yn?RG:Hr]Ljj9MeR.W'g3QV/.(f9Tm)XjtJ@k#pCNhbI>_Hg(g;<o-/1HYCdF0%Gup-QW,JD)E'_epcV
a9Z<78?X=6^.Ukne>A@(hr!fu$PiJCgXb/ZqoLnH!O<L#on9:MV\!SMqoVknY`,"Ve0LgWbWC"&41ihh
(QR05q1?HkF7!-9Rq9V+IO&Y#bQco'4`a%+q3*is=7Dg5N&>-jhP1Tb)+8C(B0bSE0?1pDMg^C(A3mAL
BsN.45,BFXD\TOUf:=h"d0AV04JQaEm4gcSJe37CAm*KVg"9Kam1i[SeNBda(Q9=[H^3pTbgkCNq#*H^
iG#C[X"+n+&<Q1F,'IGf/A</r+t)sH)@/N(4c8GV?L($q\gY7:j$_K($pcO<6!:&L15F8,WP^#DcgeZU
93liG!nrt]KLG$ngX8+TFP4n_*:+)nP0A5U5Mu%.>'_"@AAXbSdLE'j4q9qH+oebY[?g*_<37u$-rUXW
b;R%5PG'ciMh[/ek!5A$g[f%%HelVabY9caW^L'I@F'718m9V_VG(LrWZP`qI/l@\YZ0#8/7]+$Uj]B*
VR=\,!&Z6Z[1E,Z4u[q>bSAAD`HObHrcR6(/^&XtI.h%5d#i)kB>c._N,'g'QI]2C4"ZU3CZj9>0j?`U
'g4@%Rr<*9?mb2DiedE"eR-Y@#P,9d\%!'].(#@4jg439[gT/e:$#E$CjZfmlX5GZVI!!+i&FQ]\s+/K
c(%u^T0gCu_A6tT1;ZrUkoLdBq<kS;3OH"jB,X*l9k!cG%4A9RGRNL&KjIT$op'jL_PV.sY8^uIDk05I
$YOgtDlYgkp2^0JDr+X8g=CIdOg"c=W5cbhI2`+H'Z6=":@#Te2RLcZV)^9^6#;,C)Lb.kI*!VI-oZu#
kI%HE]=ti8g:HMnaOX(ok":VC07IV]8@E;R/SXTq%I/qbQ[Z1\cX]Nf*/;3<:)^2(c5.M%.H[HIMP12Z
CHX8o<7iZi\Sgl.3Ns>.o2M:+lB#g/^+@0i[[>ZcdonoNhs8%t^6U#Db\oU#6AsmRHrWSj2:aq5)>aro
4abT$<1T!E/EpK$botiRfF0R\<RglrX#*!#mI>#\f8Wk.p3QD:%CG[DgQ9j"/OubPH69hX6M]7<T'<'9
Cio9R<S+="M5+e<6YWRAHQ.khH`TI\Pqsa1j)-6p>/QN[D.W&)I-mJ:*nT7_k'l]g-=X[?hJ$/`=F2Eg
ZZcaeH`+ZfGIfJ?Uf`tlGFCShN4m^4UJL<KJBm!X'&Is_i3RWrH554*GFl"OdmV\CS^`)TSUg.Ae&33Z
1"1^!hC4QRSH@PP#r:=`-fD=T!]k\+Bs7@-h?iuDSUf#BBj-`Y7Ta!Kh?bbnHRGJ5mkjF6,2YH_T=knB
++#B.HgcW6cJAlkm%*"na[b!sG=!7ohJ$.M>C38^nS-lB9g>N:hJ),$m@B'9]bBJ:pJ-9VmmJ.B-_Rei
!kS,$OSS76JBm$9h&^oOCD7AWGt[q!hDuU9^CKB^QARXV>lTXDJ*5eIn$)$M-iYR>rdM?.pOOR(anpq.
^>Bb:1-2o$8N`@pW[<=;f)E-E9rQ<CH>>QBd_9hUi>s(r"PPo"e,)['#7-/^BHSqE9+ss<"E$[;.?;40
!D8p<a>Ek"!RT7\T\a@NjNTPF<<fgc*u$H0?rV:9ogJi'eKSF^'beHUHh1pIWE*7Iaa>j0]Bg`)DURCV
Lu-l#'k'*jC?oU^[>VtA?ZmIg%"!VScm<>,o6Y.Xmh%YP(M7$&V;</qCt>=f2hl61aPl)d>pGe)p3tj4
V7s!KH,$Y!l:$X/[?X&P3)]R0[uoF#DIYUgcEH*2.h!C&\qHkH^HfbE<BlkSiRsQ#0bZ(h@jYM4T9-DS
MI#'-&L=0\[4Bd2C1!DNZFsr6>0<#[1ftI\](N-!8_8Xs[fEaLr:paZN,bF@c@PncpmQc[(JRtX7^3R8
(Idf(/nX(oQ#Pc2E]u"j5H?DDEM48[EN\!?W)5p'%K0h^Bq838Rf1F4j6A%ZN7b):F&oh>J[B2S(bq)n
^ci:C<=<K\E1!NaXc"%"Rnb!i-9BM8GAKdjgLO)('u/_h?^`%1>gnkd)B,D>[sm"cX8$fG]h3N'?Gfpb
&%1r5kK:)Mbp#8#b6$G$gTJQc7")/46df^HS%3&_.0(Po7(h.a.,,-!N`cL[?*\L,A'F%92d3YW<RN0S
VK*,iCUqlI,jud%[J4FRQ]$&:::Z:B@]b?HU8BpSGo^JN&M;C8KthMqUdH3UoC5WAcrR,W1(DoQlqnj(
Fa:"2OC&9=P:lGpC(Z&G?T`LB\]+1rGKfZhA^?QUM24BfV7_OsqmW`)AA4eEP,t:hCVa2>(U;#GoHft4
ks<G;`Qf@J<kI:qW<^%SL0>W$ZG3P;+`EWP(hB:oj3gPmL4Q#3Bm/0&H*^$BYYqOEJdkot([6[Y0o1+Y
XCH^]7Z6OkCR'.VSr.3cf!V5SBp,Sj5+]HZ`DN&1Os(_dIP6N_alC-=.u%NP7FL3*.7_Y&_rTLGi@i/g
Z`bdA8aB>QKR2kqQ6HWnQX6/p)RX8JJX4[NNmp#\9$O**0]YeW<QR=NI-Y"<`,6ajg@NL:aJ+KdJKIJC
3ML#mq?iDc%d.B;Qt,rALM7ASgbi!N?(sdqdF-`RLW'F@E=F'(Qs938*fi%/]NZ0g,LuDiIf[j)TnjlG
8k8>ad01a@6kRmgI%I`6hhb2W._hkkon-R8>=4ab]#@GbLG$0Xq?IL9>5mDfp;PWRh^HWI?#m(+\l+".
E5ST_PlDD(C\Z1YH$p,d\1!*c9!"mOqaG=(QS%N:/$WH@eLJ8C=I_5gU#9ogWsEG5-#Xl2j]9.[RriPQ
g6!eF7:$)fgqpeTC8uOV=_glMO-SA#9\Lu0C"giNmam@KQ)>ksV,i.GY%c!m%1Vb$rN4tL(9&:uqa?Rh
WEk,4*8eq`,Oi;=p+\?;$-_"M"0pLbrrB@]hMU;Jn+N,ed>i#nQ=ZAJ7gVRe7@(uW=$GXIp"mDli2l[-
/mK.GZkYMK6<plidZuV6.GPYF*@q%nr=\,[LA-j2\'u_8+(_>+C`Q:e]sO2CF.pc1q7pVqh#6_R&^;L1
H@&'/p5k5I2=3XB,7_iXZGutYNA5cS&^<L8^J),9en[oBT;?G'Fg>A_r50!<;fT6'O-GH.mehF5#F@*f
7Esh_,k"GO],YN^'&Khp2%WVs>u`"EE"ToR.7s:,+U>1_.Q3ET0)r0ed6;fD`GU?'ECV6rk_^7[+Abtm
ifW/rl^N5M:+@-9,,%r69\6Q'`g?bKibHIEpXIq*9g8mg).k#U]_7Q#[$Oq\frapUBcUZ!EtP=ie=j/)
f0Mdu<\DU__cW3UE\=GkKa0F,4,'rJE0RGfg*JI66l]RBgTD;HmTT3dr>m2iBtbIjh=c18Ioup-4LFGe
AA^N$)Np!\S9d"6VKm*[k,J^XYZ4g<jLi4IDOYsC-^F/*nB6,7fA$iQc6n3[X66i2)F!bj/n9T@R!Ki<
;Q!_9]Pcs(B:UPAl`uSk-Eic@p0017s+JqUn@N1ta5$Lg3k-jTK&:e#_\'O/=>f92]erY35)/Gn[>.[k
1o`[J1usJq(L&]^p8,ERV;$9<445_%G,7t$>&DCkX]iVKM^UqC!`-f&/h&+#\s5<%YAU0pJ(as@.npe[
k[nO-6nIZ+WPIcR>NUbFB5t8EX1)?K@e';O$)efEh6&h5h4otY7*;]hYAS`SWTYfp>IM1jXIjfA-h:'8
Pt8#[&+f#.R`.SaEmYhGU;3?M+d)WkaK&Y@en>22978oJq(_@.6<:P_^G6&_g^E^?`M?bV1aQ+C<J@@M
]Vi=h$2U;A[>8uQ>!MtgYAne<Q#@<3QUUXDp9JlaMOiNU+#@+Ql@uV*XYtcS4tR,c#K0`-c%)sC1kPG0
HMFjAduAE;_&`a"h+)TdFH*D,O]mr5#K6G"oghc?f54^_Om3ic\CcqY$hD_1H__r0]B%09>9@<i?a[(.
4S8`D`=Y_+NUkRF:QH:oRpM:Jbr-UP&$^^im<W[5NVRZ1n*&?%0m[=mC1Z$e5=odT/?)FOjBR7bZ;!>L
C?#tI7#f8WKC7:)oH=ZHUlLU)6Wp"@9AZu#Db6i(T/cEA`\3'K!bkhpG3Xs:RkZe1;ZPN4hif)"mr%BC
%uu6jLCIla\-:^,-5?<uRS,lE<@tU3NKG7Cg:Xjtj'!NN1,O)+pVLnHrCb-aRXWM^l3H;p6e>m&C:f?l
U+cZ0*KJXX[dI+eiD"X^GIc]DH**c;8p'BcGB]K=_GomiNakPWJS\B&*Gi;O[^WpRe8u@5o/I(jV_aW\
)Lk61(>hKY?$Bg67N\V@=A4(rm@t`r:#i$RDnWD=pN0j#8-)>k5==,t&<hBY^b):7W+dahM)jD&Ck[WR
.EuqS.-X;E."BSJmE+)pg)'VuVOBq`e.JWoJ&PWsd%aqMX41mL%+O&$W63>eA$rH0[Rlr0IE(RcNL)3k
o[p$7.?JX8:23k3,O(dp:VHp;hU\NoC/`uke5Qqs\eQ9rCM1Jh'J5(Ig33>s^I.Hr+0VJ7SY93OPf/2?
gSTIBKE(,D(k$]Lb=<mt2I,9CYEli@Z#%OH*(B<("P+Io3E-n$5[-:]CZ;r`rMEfJ&)"8uP080c(IunC
8Wh^A8POLebr''[pqY!&A5E1eA!Y\+mRcSP4k5[*gA@Zuq.T%maPVE"0eI0`ZdHj[.gYXm$Z//l46X_F
pTDt:\)Y?Wr6r:B+8E;)^$-SggMt9>RU%TDRml`#:ZuA.HP\J'f!oq=T$99ofA=E*j*/u;S\"._Er()i
jkAt5eN1ZD0Sp4K*C#qb.<km?T9nm;[[UVLCY\_6NEb\n:"ll4hAT&SpBo9ZoB!(/mb@rr)B,G?[sm"c
,Pu'76N;%9q0cI+D1T1_0;e[rI[q?7B2gU<gf=qk54d:,Or,VJZFkJsAa$SJk">tFSACX,A&u[B$^Q?l
>Rg:V5;AXJ@3(C>43<WD)V+d^c)b@D9\J<3CjO?k;7-&l9H$?paAVh<Sfom3VrS8Ob_BU[aR4Q91DaBr
^pu/"gGmH\=koHTgCC$-)+K9s4j^L?p0%#5.Bh1/ajo-_k=k;\ag)C.;jN<iI!l;;G\H-!L>@4t9E)G-
C)VuXfFHD.ZTXgg]bEE4Y>9O##)I!4?JZQ3)]:5\K\$/WVUN1FHiFn!@lu9rCRPL+EFV0T%lAqN31.\*
R9g,f7CVQ(CcKZadR'a:!&0)==h>SF9tnq/SIUW=mAqX+;U#9.1V"UberB;3Ubb2th30u=fuDH"fi4?r
8D1GGNhuQM_^Y7!pKa8%b1cEX'^IW[\kn:EB=/WS7*T7V/Q.SkYF.NGN_7OVBtJ@*<6ajZ__sNt@]BTL
p25t%"V,VbJtm/qg$6@OW!dAF^#k)^9K^J>QkXmd3!QZKOu*fW7]WWQ<$3CTJcOOY3P3Yf5-pQ%";^qG
"34-LZ0a0%Nt'B^*DjtU):Zk<3&pfEL9]H+gH4\s=<CPfU("Wj_A4Th>'FbC/njM4G3t_]M-,f&;a4*`
S)`msQJD8`pKrnrFhOa&lu!86SnI^Pf=5nF?995K#JtqfBA;$^^:dYkQb1ES+$re=cPMaWe5*)nS%"im
hR8bdI\C)il27f!+RDEupdITjICuf@&Tc/hhbCl9>FWL39tu,+]"QeIFORoX8dQr6<s5e*(P,aGs0M#M
=Ba/p6pKe,T/L=dM^.UT`g*POSf69!e=ht1XmLN*b[ouHHU(n>l7VLDZb*'h#AqLohdgVI(R*ak,t/[4
Y%f`NmQhL(YA5fI'S:Q)]31eu<Ni5GQZ/nb=T;4@1;+s^E2(pL[%F0^luJT9Rh""R#EDBhAk@im?K>8L
G!o-7:[3g<FHKY9DT6n67HS)3gIiBS2Bu*kV#r1cV7>()PJ&?;h'D;8e0-r0c9M]`o"";^A$5aobSn&F
hj3],475K'j76/>ob#+I!32$OVF[MZf%68]/f4%(@1,rcQh=?rol@089-(2ha1L-AILi#gD7&a8RhiFb
o@HG@lQ$AG#2,2b`I(<??eA[#DFKLd^13:D4?i>b'#!e6?gh=j"M?R_c0CQ,]LaLK`E,+i@\8)Xm->nr
TCumU%>iMfoqp\CG!->CnD`HK,5:;fObA2SeK)<M-X?EEV5%WB'ZX5''`52Mb,o!QeS;)FojrE8q^9(f
lus+g(%%>t]\]UDf_.pZi2kge+E%1:'9tIl(VM"pm0,sB!EjMs]^>"!B**;6;7BUY%u-^cmG2$]gsO%[
i3*YBbA4lM_S!j;a+1Q3]p(YHp#]QPHTU$HiCj'e#V=02qRa]"4m71:+qGcODe[A1G-oN?5'SRmSnR-J
-gJX!*^3R^)%a&H,&5a^^a)6trA]r3s7<!M34edX8X,B%P;)8Oh0Oml<#\po2rS@55`eCAer<$hc._fS
,VXUp4m!7X0DHZ8if8/[]'X?MhWAO`c=o'5r/ga)$MSE0dgq0ZFg[QC2bUWH<bjjsgWG"b)6Qd470L&C
?`u`\)/m5Ag*l.8M!U;YIVhZ[Ye,k4?QV''kqBXprIUJeJ*`M3]F4s*Z#pjGo77Wl]ckm1oLmV)SZa^0
?*:hVqopb;G(!NE?*5?XT!]J[$2*CahES=[i%aoJ>6Jj&/X#30hBM`DrUL`?ptOaZ!p/nVa]uHj753KE
Q(#(OQf.aHhBFq-/%e=A=2S5N'X%oJf'g^BVRHgf_cnCMnF@@:p^9lW]Zop]a[j(W7Go'?,$NI4+(SS/
Dp^H$WB?P,Dim)n]L?T1aKTc);B?qWk409bd_*63U#.^_D\6ZYo.<[\G`0?d]L?j+_cmQFc!)I*\=M.9
&e8Ek?Ja\gYBcPF#ZS]G,eCY-$gT`)*U<p)*ZQqROnuf)7?4#0(+E[:M_Wf,>@d'r8ZfWG/8pYs\\(Ah
*o8(u)Vu[cjXn40b+I@H@6[lXhP0%Jgc'MrU\Y6gQa]LtH$G7[3H2\PGI_mL,()TSZG+J(Dp`@.eG]5a
^WZQh]@$7t)t#<;pIX-$/`QLufB"UD2f-t)rSb4aoAqRppIt1<k=:!7Uj_`<^KsWD/0MSoraP6U/Y^75
H&M.hJ(gCc.[GF>Noflk%Asiq,2/24D\9ae4MtCaY<\^5b?aP^DiWrNq3UbSY'Z(5X/5OAQi14X?gg_G
5\mOY?\,mLE*j-jm;T:Y#=<YNH"mik2[HV7:Ek+C_!G4\?C?LC.0D`Y9qWhOn\WTRJ1pFRH)!S(K\oXg
"]MrO!T!@a@r4T@n2.T;kq;)"dRI6nTtDVN(8]D_KFE*F]1phuD?>-c?_CtXUk?-SnXD@pO-r[gLL5gu
a@cjVE0JSO^3BRN(%d@?,*;eRIe3kJ?WjS([ioZEn<S:>'%.`:Nt\,(`qkG!Lq9q;eR=WW?Z,cf:*AoP
)UBEVUjJ/_agYkR=]247e$@V<0:?1LkjfMZ"\39n-O,N:Z>$sPMph.]@9OTP28:@T\;\e4IQ!Y^h*g8#
iR\>^1&.>oX*;s2IZ/-YX6MH@H&HU/s3+6^3aR!HZ"Ekaqm$mlHFFPDQci.Jo_L>&f6haHN>l%R45o;4
Sa]f7[D'AVj);.8Uh`.=B5gQE;H2]H8BQGrnF_0e'4JiE.u>IbLp:P-HV5;O#b:[TY$2\"_I1to)"7FP
4o=79rDfq46t#ZYBP!*%s3s:*nkc04U.FoS%_Vp)Qr(uSR,k4\jJcn1T<&)g^[UISkA'm/s-TVJ7Jh)J
,[KfHHXP6MXPW";]D]B\hQH_J$]TB/p?kT'YFi(UnqXA(TDFoBGe8@<X8eg,@FRF>RpQ-mi?*RKHF!Rk
\%hruYCHT>ht$NVr7AFM8(mn507WooJ,.."XfhC?!Z+"KBp%H5A'9V8rp.&nqagY2hu4],fB#a~>
endstream
endobj
7 0 obj
16681
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 448.00 241.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000017432 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000017408 00000 n
0000017886 00000 n
0000017602 00000 n
0000017641 00000 n
0000017743 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
17959
%%EOF
@@ -0,0 +1,256 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161128110816+01'00')
/ModDate (D:20161128110816+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
Gb!T<]8j$SEhm&<;(jW2]O/mj":1)D)Ir/'!M_QQ(=MLH!APcR8Ug\"gSYu-aOhBjF;/Z8A25#ro&CfV
_YW/:Gl70"pjafPocNXphf&Pbp<<=1Q=p(SprfoWq0IBgnb)V1g])Ts5HCCUnNXefrO;eIhuE(.?`LJ_
rpRW#r9s[^:N,c9J,eaTQc+CPDf"`>2m7XZe]k/_UmljuLB!M%^R+aL3>GNlQP>qB_55QSa;_TXJ,8o9
;6.q+qL7`Z>klK^;78.(s,)%"hqnA3h_r:MYftEgr-A6rpO?L<8mUXfhJs&IWP#,`5$ETT3"@#b6Xr!'
UjV4nOdb<8lUOe>/5ujO:[ao+Du5?)iJ;u6nf[5VT_)*mjY].I;\Mts@mH_"Xm2%XIZ-nC]W5&*U/pPL
lpRgWhA1pRnkS:`;6<6\R8&EfG,i#T-W017XY*VsCNq<dUSf,^UjR_S%FJ]WS[^pXjeHF%]Y6bJ[CQ9$
?cE0`RVVhg;c4BkOQ$2$Wf9i7:HXhNN`RB]NMpqjXk(WbO2P>',8$2\UR3VdEW*tY[j4PA?C7%FN1VaY
5C/I>i&@LVdBW$f._SR-hD.sR#:4%WOr-rW]#r0mUs=O)7*?N1E@[9[.rU^&Zu)O1C>uE5RG!K6V$!>A
D,#XuZo1ZC>D?`TqWRUl&]XghqHDEcMM>:6/)JkHpU>h?b=TFFmrL,ULh<<&3Ieq&@5?rQk3D7!S4J@Q
16#u?]aS)!V3XWnEn?5^_S&:(?Eu`ZD-jERC8q//Z9R[RmHni,f=Rk`#a7>^Z?3inDpAFeT'Q:k8=aE(
B[&N0.QaO0F'1B<])'GYb*qJuBt!^cFd[2V9iH4Lod3g8VHGJgC8=!E0)u;o3+t=?A9j#u58c@TM:]-"
b[!8,P\!19SDbsAMV"JAU+i%T5Xc_)Wa.$_GH?m?.CZO*R.q%hq'e-IKY5`dVog;;1l?CR2RDsLG[6X:
g(0DZ$36NZIec4mRkbPum\,et6X`&q+]`c[0So:AR1_53d6C5KijbHT7.S32f2AXpb]%jWK61d5UMB/Z
&@bJ+qqY;4W3L?':#+O%)X^^4=ApM4F(crM#1?hKA='aM1%0WkG$>VX?V<AX*U<o&:?eUu[Yj<+><>G/
P;:?Q6lET#n1e#DT\i$'QPF>OO\9<d1kW%eR0=a.B_r67/WZ(VY'9c&S2u")-.AXGjRl]WQJ*E,qm5/:
pD]qn):$7ABM*b0SC2>1;u4aXJ8U*?qTWu0%`?u@(s[gOCB6I)#O#bZB]h&h[^m=dd*6N[&&SE/%#:ri
$jZP]*2(2g2DU#.iMk>EE%'V_E.AJ:JHcY&JUVNlo,J:nB'E*GZ`u5'ee"JK0H?,)AiN%7_Z;q0#O!k3
$cQq-&&VgMS)L$bS)HJ@Ie:Jo%SGLb#PB*l"*>C*7`KC"S0[c93']F?!BpnsXWE5'D;,oQQI-Pp;eG`4
gnTR0FQq+@CLaMe$a6O+#5+W-(EQ;Z]%Y3C:bS/*"/669Rh62V&7adOVWLC`;%&ssGSr>7;*Uq>Br$+4
(l8W(>nU`3>[(O/:WaWo:@/^H;Ep;B9!_eZD1WBcL6.gl.ZouQ1uoN8gpZ1F)e\r#N[`"'9LR?3iFLW8
)'32'5ZO>Y-).BGlnXjn]muum't1gA+3p>uIT=n5://$`!.FuKjn0PZHOWTGPUU!V1)qralp;"Q/$Io/
R2X>V:"DDfg#OkVKkVWgWEHs:C!9)0GH06')/*eg[UuuDMZ45L0([2F*K/sDEO0/"]:0h-G-g5W*[TR)
`B"dTooe]>YHq_WePbS*jSUh#R/SOs[B9i9]lE2)pnB]CjbZ9:Z`R5ur#!Y]e&I@BV.fQ.6F\^tas>p]
k5oDO\X\YI=;F#cKaAN`j.Or;4ng^7eh[!')q45W-Aofdl=!h[+q\mM*9)Yck!]$!]$J>R`;U_Q\eZmH
'_TloID4oBI_DIRo$KkM)BM)K)mVZsN/l:hd12jAcc5H`nX87`8+e&BU/6R/ffs;smE*trgn:%\T\bU\
&Spg`1f2,L\["*>!UJ.A%&2(7rr0`:[CN&B0gN'`@u"[pRlf?ZnC7.[fq'20Yo'.#9TOLj4*mrn3Zf[2
TAbfQnS#'][Mj%">d:`=eR[_"*d?SS3,G&/*J$[Dgp+:7had)?e?Z8d)]<k4n?R51R[lOGSp7aiE"(#4
fkPKo#\9GPWF"VQjGkXVJoaGTdLLI(k/q&E<V+baF)PUEn\S5(>XumVJ[i!&GD$A^3Hp,\qf(s/rJo,d
5$u;3[TQfIq_RZMZ#N4^d+aP<elH7Q17^M4m<#i_0\7pt8&uRZF2n[-CqUr<G=9R(SNF+nol.sLb`?'I
G=7;A%POTI`OR5?(sX-\1@BDGA:<ag*GM/=E(AiVS3*Iqfps.$gG\K0AMiiMPaT5K`[H5C/>f&CdFpSU
C`/ZB(*2/^U14r)1q`9jfWP5hs.T,#K("B!r]A[\?Eo,#^;ALQQ"K?(?2JD>L8EHkaa2Qs]Y[jk]juK>
lg)<pC8p5jE]i[dKr8+c4V7\Y^,1n2!HD[^FKDY-C-'`sk^>p]NWI,_nLmF\OCi[G;CdAVMN6)qdYX"3
m\`RqB[be4@iO+d[]r9A2J.&iZT*5P%./^mU1:Rii/oIX`>0Jh&$@9@#2H+Ha6;QXa1p9YFJ<9J#u;S!
"HoQYLZ(YAW8Ss'[(dhj*1IrX;n[TLb@L@\H?9RomDp4/6pB!Qi6XVJ#)QQ*0"0lNkSX893N5^c1-.nN
+&@"&]WaiFJ9(DJ(f<BBZ&P7M<5XZTZ)6I,1$X**hF@BV*Z_#/49"?Mk0YpWY+F.:(atY>]qc;^"0TP:
A(52^kSV^-L4-e[Ps=Ik2T'McSmjM.3/l,Nc#@LmHYRtnXEVA4D\u:?P3GiI1E:>`;TGQnGh2chI\S'L
e'GbEZ0r?0[lEEfo@c\7c05%ZLAb^DqhBjMj7IaeZU5O3,L@9?hpAT4-/UX<D5qI1Y`\;l2R\%OKr<(j
jSK.g1W-I^9$r(Ed-PFDqZb38cG"kCbJ%n&chC08HE$H$)kMA/9f;8udb-QqD#4?MG2.=W00frqVXGHH
RG!%R[Y"DmpC3@6qRuudrkgka`jTg<R/7*=P^MB(G1tV.5`-V1h`qL'pLmccm2MYqrRIuaZTMibA'Ku;
HF@H$g:_-!lf":4XZ]:bo!!S`RN#Qg4mM]CjfM_OI$C/_pLdKc4Q8nsr,oQ,3%t3k\:igcr!`&l:uB_4
rPKTLI6KB234$'2Oc6[5<(Rq^X)Q<eIkK9])"u_ibHj.1-bt@]n;S"rb#a&E@CaS=m>G7.>2LNXM>RgX
QQ2bgk6eGZPj&gNr2a=(.<$K=n\&r&?3;rnSgaSg]5EPnr3)K]r!QTsnqDC%O0S!go%<7-o&'o9PRB<\
Xi?!uFs&J2Cm;LUjR)T)SiZ(jRb7X,4VBIb#7S?J@O@Lbnci>u[L4CU&0.[?=AN\l>S/^CLmq-"28"&d
k`L>0>F1ZU"eY>"a+g>mH9J74$3.Q@[kRDP!ls/LkC:==n`:-7>R?'sb!Ja;+A.iW>q?E=6?#J@_4;-P
?gIK%2\noUPU"L9'j_J#'92)G..8iAGTX5'&ZfHLK@RAnG>Y6s#\=lfhl0d&E.egVe4p@:2a"H##5SGY
]!VC=Qt,[Z1,^&Q5oZ(G(p0t:CXOqd!L05\S^V`l3Mb]lR6#rdKq;b5'DB"t,*j\=h,q#?Z1]CM+]>kl
GmeEn0ej76D!c0o0Y@]K24LiaQq_Y)lWaG\8)`!<TV7b`m_AUUh?Y:nPkKo;#b$;b'"/@nN>J;t/YkNB
Mc0a]?/oD_B_<s%?Gl>I;jWIRmMb]8*S!LG$Ob3G7#eeh=a8(=3?H**]>L5<>>$'hT.q@]5A'ehYs05/
UqT2cH<Kk*80=6:S.E=%7'$'\$$q1<"I@RI%Tn4Y'QkCR\aAY1/?G70+V13_7i)c9WQ8g!HNF8d?[@uM
S%9$9E)A+]Yg@&'H"n\I_B9Teb/.LE-F4pl/Bo%qH0o:=>_ou>jQ.2d'o'&8Oq51CGCRuW[[(ZQ%S2R>
"Di+1Ig55t`%DY#G"7Y*m?Wm7>9Aq6HES=7Kr0/Em(To^luViNIJ+n8DbiK+_hOZ3[SCES'`[m[d'Z%p
\!O7#B;pNm8/e[S!#;Uj2HOdEOAi&&(;aicho,/D$-(CkF;kGu>f\I[nZ.stTr0[hck]hXe*X2)8`eOS
U=bC%lH3>o-'/l[j$gY?r3_o;6*PDJ!(r]dCTo^+A4:dg%_;2dR(HBA6k/(,1=;2MWLPQ@h5']\Sg-"n
a(l<E&f1:Q`df3sR7iZ9S_%`tO3QA0km2QWSn"asV8`cqFXT)gOJ-);S-FE5!"]c0U;Up*nT63>H^^H`
M0J!1j.uZefk&!*j[!rGR?CGMZtLGWdUlb`C)43r\l'L!gW#-he:U=@]i;*EZIFSAk6$8I,5I2YH(3rE
/0$1XFD7g*dIOMK?0t&?(>8(F2GjN%Nn%50D/7g9&i972.A*!D\u6FOX_E))CJOA(Y0kO+JnY#9pjAJ[
RQ]=We&9,V@lV7(J@bSa;7CG5.HlK>$9brN:*A$G>!#rggMY]>U_o0D:8!&JHnrIurZLHoPc*e'd;1'5
?TSL>T-J93.F\H!jE[)mDg$gD)n^!4X*?scn(=$%$%S3/YekQCgP\$JV!)8rCFC=a35-O.CR%e)F$$@$
gs8S.7d!O[=ej$)gX^h*l!IqaWoZBRV9u>I=kTS=K+krH6<!jKd^aGR@T$68ltfV8f)+8J>Q)t,Gbknq
C+hTc3O@"VTW'?bd5?5QErtZmUZaHMk+I#lXJ0jhgR(Db<*A+?$o.QM\LknR:%fp*<80uI8a-9KC:("E
en2D/<r2=be1]G6[Fl).f=c+^\@LB2ENbkrji71PB$#>e7V1c9p:lnSjZ,E9lpC@:_]gNUgo2T7c_cjO
Bhiod-#;nUeEi\@2GoA#aV85hG_h>Ie6@>Zc%E5u.Bd1C"=<H+aoaG-FDrI]"#;b95?m3*r7$@Id-,Z7
%;0cUoT@bh/mXEb;E7^@GnNPUqo/-GS&aUhj>i6+B#BU'Q:Uo\Eu1OXGfcJfmq3e"6>^4*[7:.-Ej1II
V,m-jm6Z>d1rI"fj!/%Ha+(ppHTc2.I\F"*A#3aO5.Hk1gu>cjWlUme99$Z;bF3/YDmn0.H!Me4j0DS<
Kt^H-T@QXRs4I!fEbJ8!m0'cDC@M_AdV>hrXL)1"A>P$hPra)*X`dqK$2+riCfX`/F(eZ)^>YI2Lt<tk
WY)H-[_l;)%Q37r@Qg#\e0A+1<TJ+'WSo(3HplC@hD,J.Pu]O#DP\2bG0:l=A]butGEaTDBU<>^p,\^H
e(8eGBpl^,OHg_JZbO1u"6"*n&"BA[[W&>QhZo'd['80Q7V$j+EK:mks+>[*-kA!!JQ(cOEK?F@[_P%0
f%cJFl*U=iAM`1PWP"khgr%F32YY":jNTh19&A@@cD!5kYVWo94WKB,?t/iS4dpPkRj3IOVp->fe`nZ.
!Vu?+4W8sJ4#OSCA')f;Id.B3A_-UXI;t<(2W>d=Z-qj4MbSUA/FKc>c^T84WC"/*#6L0%1C0N3p<>5&
8'X8d5)/RVb+4BUA2b%n=I@JjE=Zk#qW8iZS9m42pTTh#4fmMb4fhXn&13Oa'"9!U6b6R/;q4f".6VM8
@9PGSi>NF)Gj(LL6Q=,,eU`^,cms3E%ANT&,L@M`5W=@WSL`X(;leN'>n?@GX.?,/XN$H&Gi-ZnBqDC3
aXbSDGopgemTTXHl)bK)=cPShB>*]ol$[\Yg-$=^oO[>+2lgjmf$j#7YpHG@jsX"^iF"k,*,c_RQH,&2
Ha:[OkZEQuCt@KUJ`OBWL5;Jkf3>@<'h(ZUEB8L/OY5F6NA_<.d5UIb&(VOO-\%u548<]#pP0sUdH']S
DnkCE=Een\TtquGYF#09G6`S0o((-d1%Z_r@:,Q22k`8c?3'6h7H\Y6n?Q@C.u?>>5\oEl#$5-fr\FCo
E.Nl*P\I'C`7DNmgZ!p9l90:QXGb?_Mrm?jV.6&laG"/YFfRFI5TLIe;Bb\SHUaC3T#t80X=<\28!=@)
$]9j',ojLsU#,Ha;"D4R)lI6,8f[am")8bPE35Sb%E>u$7fhrGi6jmt=78UkCq#>!$)t,TPGduS(eWeZ
7i,MP_d_0+>SPjd5q8-)M39%G,m(&PNZIZAgE'KMc[4/eeRdK'J.8P1/7qT3LQOG'DQKl?eqU"#fh\Vk
ngN2@o>#ZnZ+MD<1qp?8RDo9_aR1-T\.lQ)7\"%f<YIR&gF7#)OoiZ3oA(_bfl57P`hr-NIPe9hmt2K\
_YK'u'gLVj2r?at$_G"mGN#805[K!$r/3s7o8WY\37i#@,BuFlk@BqaLd!6mG-mj`Mg%RWW"-"$H)o1<
mfPO4NckbF#.(`u2"YqKR:1_F3M0a>s#>N86s]1jc#VdFMb^bU,Bd@=r`@=Kpj*esSHEZ2,(HU34m#>s
?O`XT;Z9baq0un2/e:.@eS*V'kMX!G8&.)a"rA0-:P/D96ln5jr6>QRVc(,(BBYPWUj:grm4-5q\>rrl
c1>!/oqP0ed>XBXQoDU"8R=2b]obkKRmSQ@G.2ZD/i^?aL@fOJ;W#9l:25feA<pl^opV2J<R[U4FR*#+
6%Lf:CptR,Y<-*$K]Qk'3,4cG1"MBI?q#t!(_?Gl?2e_;-_@nJ^T@d>NV=o>psbu7YP>CIS:e8nM@RXn
fkI=CkL9u`O#@cmZu#hB.rRM;%'(I#dPTaYM?\Aum70pb?(T2BeH6%/d71Dc`u6`eWUWBijVmNcW1DTC
,RW:$[.GCi6>t"<<Rfku<pk$(]d-Ie<RY@I'AoQlS[^-BjF2Gc)^Cl+Q1bl-^1c\Z_="ckVV`^=m^IaF
3.@?p]ug4):p'/RJ]9Zu)filE;T4FQ[t/9WIX>SrgFO<"DklI'\WEHG]&2XQp@dNqc>A"LW*Ol,nFk=p
hlZj5\,BP1=)<?^3B#ZH#2Op"]T%ZnRZA?:,-N.rUSUn,*Sq0f`H&Ti`VQeTSNIYL\RcpNU^:\*h3#uV
3Ep\W<rehj[ST*Td.s^#Tl\DJqne/E$M-*^&`NH?P(GU?rN'$3m"P=IWq?WZih6(sm/!.QG_jDk@3[qT
XUjgl%_hW#-UdHub?=BO#>_*Qr]7RQ`]['VCA\ArT8%Ek0n.'Tdm<sgItG;g-F!2m^f+RljaG*#mr/([
_n@n%r0Q#Xm,,!mr`=K[1a969>r?4W.^<bG]X;SO?h%-+d[+k>pFjb#FO3'?&'Qi7bO>&h._GEZJd'6%
o9AS3qnTX0=R*Ok-8ND9D\CO'<fOAR6lXO7DG2_,P1p)FhKo)U>MXb#&oE*%jYag!hUIah>P)5W31$jq
K<klkl5GmT&,kd(VfBbT1&3.Kg(f<X-NdVE"rcIB^tsLu,\NA9^&,\2c.oocS3]!V\ZF8=TKSn7i\#VV
C*2C\F]3,.>KX@s_g+q=pI)Ba<(.@QNGN>$l!s"s8A2p;XUBD*bd#o<.1[c40t.?'B#f/51pe@J7(*?]
Y*FF^c>G%KgA<q&&7)n3i0[<?@Nq#"#H2=fBDjX!kL^IfHc7VDj.I'QWSJ6*RN+Q"'SE%%odt792jbp,
7_W4bkJ$nUc@*8\K,a2\cR)B$:$d,J=<7n#naR!r:!t]En6hW>Wo"66nZK_!^Z*GcX:dJ0]J/Jj)&L0n
\euja@@/+p2d]JFK4+g'L']jM_Z[Og-D`j(XbMaB?:^[-Z0&H\e=>.6=iVb[e`1Ad]GN!W]bi)C;blVf
(aeopHQ$S^[-AQo6kB7Ee)7@"^#jbOM^<(+X1J0fa@UX!2"mHCNSc@)O&/CLG3X$ab&]^oSHP"h3,Y:)
a1.a>)02RM(*UqAp"lt.<UGZt]OEr5fN>J\G4A\ZY,^5uHZn@RQa(0>?<B:qX6KoOSmAbHMCc/KV)Fb7
D:o>@_o_G7;>8CDnX0dZ39X&2.7WU/bK^A?V]j@l1tUZH)IHJFo<iXslMcUeHgS_16gL5l_kC<*R_$d:
9XgkiP_L0HNTm5h.5HJq6477uqGQ@H3:)mL,-.(i9t(8&S`iJ<-1f;3M8r+S?(8P\A^kP]KYq84hRClP
IiTL?RXO+o'<3Yf/%"mt`U<(D`F:coWBm:tVcbT4db.Dg-T*EC_.h)6(?MsQ\4jnN.pUP_CU:g/FJ<3A
LVdCW`n`W<:%m89[lSmW<EWhYr3dl-Et"W9m3khPR>Omf!`f")]$47P-?7@Be!d0mO#82R%jmdfa\NtS
$%/GqN1]YL`mG3<kKYfC<k]'HZI@b_:_9q_TgUDXY85I[Tc(c+..*/SlsKssA"Ztc[8u06F?cn6Qt\@W
&Lp+743?,m$V^E&\ET1:Kse)rDYbmco,u1Rk`)lWZQ%X,TGL?aUU-n;[F8TY*rL+UfZs(>#&Lt9]$Q9S
?Vibf"NTq]]#F5HZ,[>:rsR\g"NQZFLWRseAt]]#:Fr1ef;P73"eAf3MK(("]q8CnfDX6`3j$_rVfH4<
G3DoNpH%S,p?2Nd$'/#NVW6Up#B^lq;tX\"@L5c\!-Tp0n^`Ds5lZYL0#MaCle#\RO0RAFkA;!9miM)F
edS/hQ2_S+ZU5Oe&%=TehjWdK=^sI8ZF)\hf@ROPOS#Q?Z_srF!Lm;9@g/0ugTOp]YDo&u]==uNC6<M"
BHqMt'/r^eWO9uk:iF'-:cBIBL9r3E46fIapRY.N`dC[,Dq7Q^kAs\-BusO9%@T\oIPp/EjmsXImt8/R
!9+Cr]O>XFeBHk6bL=!lY59_?SW`NT<AF+)hi.Ea-[gtX\*kAaVJpnUTj(Bc=uA@Ph`WNN3Gc)F9fgkZ
UEG>o;pE%qRaH!egB4T<bG#Mh9G`DOlpM[K0eA&YF["RHa]=sl6GgBFHqfZ?SQS"J]XXdBq)ejlJ\\L6
]m(VL\rYb&k8P/ff]6dmcWG2$%,F`WO1l.e7sFs'Y!.s,f>@)U\tO^',j]WUF%"aPe(u<2SSNPE@](!&
S?es98l*,hIPf4Xo_'Y5Q@;ZYl0-."K!e5UID9OiqDT_OlJO`1P\BN=[fnc"[bc8/H>;cZlQOoLm90j7
[m`unLA.Tp3F?<#B.nl(Fh%,h1V+CABT#!a--tqa=EZkMr'j>V1Dn'go<fC&ePC:l(R`f`#2o0\b&Vn`
in45!b_h\"@c*)'em;nX1Iu/11Q-n\?=[K&f#&,$s4W<)9L\"9-pWXVV!@*Qb8d&DC+nT!AK9_J"Z<sE
NlO-Wno`5<'YOhbkkj;:9ugWM@]2'gD8Z8?l[dA@L62^BLTI^7)/A9QGW*O8WkH22[Ds.G3l2`V_qS^Z
`=_ZQp]'B?Ci,XWI+:5&]r,]efW(lbep<V+XJ=k<H`f`>C5es@9mrdh2j'%!&*fi7bA3L>,TYor4A@3A
#'tJPc^V[Tq]SR_Rq6o9Fm>!l*n$k^\t>sg^<sR0RrmJVJ\ET`E^78f?]GU`5H0op(b[=VJ*PS=YMQ;8
$8dTo^73mJC6YhZAc^K3@iqCIhIA3d[<gR+Jd:8l)u&=3hYCj-XC*4.[kMG*\W!c!7gbT/mqi<GK7n8C
`C[ZO)lNC)W)o9&I72k&e>$HN8RB_YQp'._HE_nO%+nXM?r;7MI>Wa<@+qc4-pDO<PIM4q(6</UblGbQ
[1TgM77S+\Ffh?;UQ&lboDR+H?5%eOT5VjUh.-R9i@CCkBLKE*"bOR4IM;rb\tdT:=(gfiRe7+<%D7?>
%N"Jc9ulsS#:8#:_$e8\o6e4bVh+5lq3CYmCt;C^#W-?k-"kurPC4A:UfQn'3j6C$R5N>]4S9j,klmD^
^[t>ho2qVVhL'dAABOq04o]FO@:/QdAi1J:O@Ua7SN"lFi.1Ihl6l0uh580WSY>Ap5-H@9[>dB'EX4%8
W2EZomp_o8D-gGIqjUYZZk75??+AXq%e<bI=YU>WV7\7t<or5;D>X$nXIA]L8'%`u[\pPs_kiV>mWt@=
d9>?EUdV\@_)G!9/(Amome^Ct(Ee#I^"F7u5rUBT((m<ZQo!f+U/%]4QD40'[^90/AY,aPf:)X,'SodL
jNiA$^WB6FNReIY$rC2rk#%jjJIgV."fdI+lIFaiDoTbJ8o2e00W/FP;aK8SLE(I>CeZ>M^s:6q)K=3>
4!E\89C\UBp2V",N,.[kj/'5b4U0aS>pr="&ub=DUt8,3m^<US15Wa!3mJ8Xd:uKO]FL[@O`Xp4eDcU*
=A>mo*,f"fX%q]$B<'eSaml$=Dfm+kpa0[]*>F8@m?mp2P-E3K8n]OLV!8ip_,)*<9=nldPFWu_*EopG
?B)J]Fp-!8m$PL4g'p_.4l6Jl^;1es-k+O"+Pqst\uj3(eGc"Ul.(Yg1q*7/!?l0&ers:6EurD>9kA\+
fl8\VM;4NjX4R\lS\T$UZ+.R!gS0e(S5e=nlF\?644%_!L20qmR9=$"X)l!>og0a^P%#<sa5cer?7)N<
Sq!(+'jlDP:47!;If*Su:"37Q7nn<UB`$P[h^L6tS92B^4EV#%P4$ASDF8`M:2[aUo_$#b[;R_"<W+V.
8T^'lpqcHgBn*MkO6ZDL^J2_+jGfA[Ot]Z@H,o$e]f/%G=ohM40D0Ws95=-5&/%.uX"i,u]GcuPib5ED
IKNsPb5Yq"VlhmPhABU?DAE4$ocf!ak2<"oQf<'_hOtUCK(",q-GYiB2nP9WHM_!!@(gdNG*Rg>!-mLr
2tnq`=m4bN:A$le('960R?\I(n++5MgGYZSa]<n`8]b;&YZ/TY9]i.S`(/2O*ZK#8c0rF*1DfJ!i*=(n
oZ`O7G&I^.FoT`p%1&*iAU<T#GJAojpNElDDtBO13nog1c&2.?C>S\6&lGq4*`q!q]5$oD5^&b70+U.e
g;@dOl^^:>?8NAIbI"3L.Nq1-^3=G5+eanq.$VH%=Uaa<A#@1O2pUO%$3C8D+^/=3Fr"@Z_H<dYF)I#I
V")N0GD*X&ZA,2VB/k,D5:`J`V_Je\R^hrD:*ATeYWtQ#-n5;Co]c-dA(q+H,WhE5-,k?4Utb\WE#",j
ZE`^($p^`@=I.,EN)`A?EHi6NA6^qD[:ZCa1YcWKhW*1^eAuF;EB[,$ACBMi+q3iTm2[#1Q7bimSRNMM
N`V,9LY0Emle#js@t&+2<0)hL^?1uUa!9LiF7VI'=`_G(mIH]ji)4-=X<q^g+$s!)bSG+)9Y-A'R`CD)
GF::_MIsS/=LXn*degbaI)AAkfpK*8HcNsRFfWsZ05*apgC,:l%1DXlXUBIOU=5b%:J+T8f;IS6*%V%>
55P97\&0H.i^oJ,^7FR-rXuD1n#>jjQ1ufbE^#ikVc8i=!p&D/_C<.Yk76d.:]',eI+T^0Nc'6N7f4Hd
0M:j#\5\@S%ds80lu1I5rh[I!^Gj`)Ya&b6"i*p>fhusg*?BW"5cN^>1>MOHYAiV_HsSQmlHNY=[;)]:
;)1B%rP_F(M0mu?RX>jG*UWFBOFFQt]:'o"R.'_8dDNR+Gl)htY^o=Dakmjophntrbb0C:BHd]<MtYP5
>-%C254egF"j<Y7R=-n4CJ=M/s7#R<)\q=j-==,O4#K2o`k,R<("Sasao&*h8(1\MeFG"jT(W*Bf@D"X
&,5HNKA^6Hp:%No0/e7M\*AJUMEm2-,!(1Ms'i/'BD_\Js(VN/lMiemh;k_gQ\^\%9`*-P^qUmsm6BLh
eJFFb?N2Vi*C&#&p$+6W#SQRUn?,41>L]Y;mC0jpDU%bLC$M0`J'B,,qdSC06:<+SJ?'Vd=ML'52u=!]
#<kTdS(+Y/kuT',B7uK/YK$[,4s=/k#2]PWSWVJ\hOWDNPXpbeinPG.K%n^\[]b+rDSK-T-*Hr7PD%eA
WB;Qco`HiK\(`R$GH80"^R3j0+j\V$^(2^bDBJ>.iqF"sID-:r:AoE31RHQS0RerEs4RFerr;uX`.)(m
s"?1\KfT~>
endstream
endobj
7 0 obj
11917
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 396.00 208.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000012668 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000012644 00000 n
0000013122 00000 n
0000012838 00000 n
0000012877 00000 n
0000012979 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
13195
%%EOF
@@ -0,0 +1,233 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161122165543+01'00')
/ModDate (D:20161122165543+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
Gb!Sq]8e0tEqT;[q?OIIjI<"t!<Qej`fMbdTH3'YTZ@'7i]/B<A7d]rX+A5.g,5nVjXV/V`f"BQobQ]i
^5(I8^K`]7H^b!0rr2HT^VASTIXFd+s)e0ZCe\6nmTmK>rUK:4^A[6]k9']noj<4Hqt9oks82$.rqt)L
J,K2YrmS@B8&,)na%>f>J&egc]Qqg$adX[H`1+LVLOY0Q5HF^KCIE:CQPb=r_84Ob<qfc;rSd5'W&h9!
5/*;(ig8]le$8aF]^#Oem6CSf$iDraI%S?\o07X&kLh,IM>lU@m+5Glhd]E"[8)b%*o:XPr)u(F[jr&k
rY'YW5NXWtXi+@P]T']Jo@mCB[I>4\^%Lk4mh*Roocm`!694o>K_sM;`(&&d)a0:6#aUQlP9kGPeF?Q@
CBpI@E6OK<36q*H.PKI$m.W1*4s%E38+5KpHb-rBH\pfOS%g6@T#Y'XNb<9UEWXlRTA*Qg#;1)bB6eXF
Qg:cn'BciRX.S6P3q53oAReV7d3;s:+08<Ted*']XB;4KUHX#QEt4OtJKFYl]T"@&HcVV"M?S<BDt/SJ
>GSXMriX*uKl.b+5B0our=s%G^7L)6*50[jj'1i`]&;FOlh<Ek8Q&fil..V\rQ`!7_ct#Z;Tj+H[s5YG
Wg2.>bBiXOcfHT]GBlg>/l*qOjXGnq4Jh?r:[,I6'?%K>lJL^f5!IO!'V+`I)Q,]+KN"K1p";^F1^B5B
F;=)I4f735eiRl$CZ8IH#X]h5.04"QNa[J'75W]ecFU+i:Y>g7Q'0hcM<<SmQaja=e`CgOFN@<YQFuWC
Lo4p=_Oej!&Vs>+KY$QQk?Z6hfWl&o)C8D7X`*#b"blPD,DBQrW#!r9jLjttj4OT^/fL",MRH*'XsG/[
3/WS;qSS<l&:CX/QVK/I\&QOV(uA^JWpDYKk8Iqkd3tGXfP$.UYe%anb6aCdX_QuHP`]?r-\\6l-5nGX
P+a9&P0QVgXtq&5kGNRi%.''SB;BLq)<7SM`^=BtF6@nnEpM>"L6$)Gn^]JpMU!pU+AG:SqA4mQJ!"cc
q%KC)f3eMGR`=[c0+9N2IuHXBiY1/nB^:,ajlT?d`pMnaI)c+$r!V"<4b/dFblb3@m/b`/,nE8SkO@\`
gj?O$eU*<`lWs3Ibp>LN$cC0&83Pi-MiHh*Um>ru`IV_6Nr$*f#<p0mr/9(Ec+bsFr/9(Ic+dBBn1P]E
C79LJ]77X4`:>RS%"Y=fR,1,B6r5`0'i^Km5Co^f"HJ&0%:`D<_MrT?]#4ah-k:9,!;-H-PK'2;ko?k1
AOo3f56<.]X]4q[nPl7s_:VF<dRL,&@k#dhL0kl9)U4,Sm>53rB%s:.5st$'Nc5[I721IqrP@ZS*Tj2N
X,<4*9'0#Wg(iPG'ap"th'b<\Q-DF12g$G7?^7Qp6mYskfZnUZW&kgm+sQ\*>BQVD-`4-W>31d4PJ0Qo
$LspCU(HXeQ<[Zb;dQS5_\Y.fdlUDAJh`e$4t/8_&2*XfF)W>q48G?]P'gZ??7HVIQBHc/r?bb?Si*P!
)#IkgY-B,g6`k?6piU&U.MsP</I`)9$)$WA6!g50.ndL9a`gqPSU8S,)R^I1DE0P_fl))KFH*;c1QBb"
.(S+BXd,/0XV=fYU+CCDQVjlj;$bW0&KEd^#ou\0^3'YMl_-\[C&sdhBZ%M)0nX1VoBd!hR))GEX^sQj
>qn^Hj+nSsNd/=hqmB;'[,,!;HbWpF)4$8dQso5qM]%gU\!UUalY[puAiT;97TdlRi2;R=(gu#&M]%fi
YaAkPLjOQh$pj2@TP$IPmnpP*^D;Q>_jJ:*J&7,`iHtN`^&IYqTlGO36hV@m*B\?<T%N9(K-%MH=Ym8o
f*iW8`#CVO7GR"\TC'DWi@YF\/3,Rpdq%)nd3[c6Vn.PBRtQiXKTB&,]k+nMlOrW\>%tXWN5$RqGtQlQ
<U<F$DSE&Q%DN[5AkBq@s287DO)K<H=,9Pmd_j=ngNhc0`bP\qqbMHr0`.n8^lY1/p@lL&*po]bM:5Ng
g`1"h/B+^D:oTi.RF>=<>32N/`<T,dA'L,:VXt6qIs1bdAt&oHS+bE<<9T6o@0gLk0]&Ts#40p\Q251G
0=41fTAt!2_0?G+\.@-r$Yr.DZoK5mQWnn30PJ1:%.kYQBocsf.*%V8_F')R`>*;N.*%&@i.oT<0rO.3
5Om:<'!L#86IBO2%8WgUh)qu$FdHlB<G">7*+^d?\!HFJ(NkF!QKaZm4jJKcc+4hDYZ%?`GC"bMS+BpW
Ek]^1n0q-nh;p*K]0,2&Q`$ABns&`OT'kW;)s"UnTuJNW)"EigH[YTAUS+3f4QRH9=e`mT1gH=+R]Jci
!ff"UPq>b#GWMB\"";#;AjfT7&T_3mn>dq.Z3:A(FjYCp&H29U"*.X_)2Y68i@$0KWZ.1#,Q!%"d/nCa
Gt)fC\V4X$MaP1b,M6GJ6<#fL@ijQ=UK3\tP"l?3M\!a."FMEV0BK\Z%^:gUa`^r8lIp='EH)uW=@dEC
rS^41-'WK<Wt\geDN,GE@Q$1li_+Br@<N;-(;-U((V8]-/kcjG:PdZ-Wo>F<,[4QmmRm=1VmU(!M8,oD
l9f46F6D_,l4!$@;eP05l3t!7hD3p][U\(fl-pU%n'W(3WgD:@bPFjm__d<Ig6RGFauV,EPqNN36i.T+
=7b7b$#^3L/FBlb$_)i;cuN="NMVb\I;,L:cgad=2gqTnKbN;Y%\_TjiOg-n.)MHimV_"16<G!0d229d
fSO5($3WX3$o`a)AP(q!#nAYRejRS:<&&*^*3:bHK"\skOE2k0nRto=H7)G60j`S%+Xl'SS\[OP1;X^"
6d3'F1fg?5(946O@%EukKO5*'Kc(PTgB^"g&b]o&b-Gt+@>;]EVO1(_oUARN'(AfC>]o:+1YcWXbh`ko
&Z)f\8k.2t2;$$h`a(nO`I09S7/S5YcL9?X3aU<#PrT9r:d5Pu+i*`d,K9cD.Ru64oU.?S:DsiTa@,1F
K)q"<pM6/lgI6%S9/Ml=T!HWm$b7Mkj_#R'#lSoN4,,"&S?%oI^S>B#\om<tfp]f:eDb8frDJ$&M6aE<
kil:GF^d$-j!;(P3d+Z4M=RmZO;FFg<)T6>9YUBjOq6kmfNq+L-.YP.R:ROK\jk5mR7?C!P^L`^f#gU[
<f3pr&4-@Ob<c\SQ&Pu;Cck3j3[#urZ?/Q8QK>8:^?W+,f?o=W35&@,D"h+e[b#8jmFJS6rGJeRWTrTQ
ib[Q:2g`:tWj#EtQ?RYilF"3_E3If7[X5-Ze(neF38\S+H`\7ED1m8<)aA1mH_G=%ghV$Oi*NJ=LjOPq
Xd@Tt.7]LJ@jmO43JW<pZ6H@K'0D1"pg1^FY<V2@NUn#Db<iD6*B^V+T@iE*K0GOEfk+V:Xr.M3Te$RA
\;7cpbHq.KIB4aRoorDLYp@6TA%@9)O(G0PehZ&-dBUf-3[NSYFU@e>XgHqget5KXb"R*$X'"(Hln\KZ
S3<!Boq-KZ#Q*q\e_bb)5P=&?6A@KF:#7R-jUm(&g"Yl%@%lfI"':1\NZ7XK!t.ToNHX^)Q.53t)4L<8
kP4\d>#9a3&Sc`u7g(Ta0C#jE:olY\]=rUL&W)M;Z#PFXGYrN;>^PH1/+_Kf5@\7_%;.aV@SFX8W[_"u
C&YKENMgV%_j#Pn$H%IU2pu[;:62bf]/2"mCOW3[1/X9S(SRQ?7MbT5\ILC&n?*L:Frd+FjQN/K3C6q'
SURYl5AUZoQts%>L7A)-1&h580>7>uYOt*27UC9Ra666H/A+Jd%gq$#"KVR@'rq1di@4pqhW3N;ANP^2
]UUJ)C<0faeP*p"H%hSm8DY"HC+n[o-X4`[ZBi%'?"0\L22A,9P[o?78s@ZP*5+.gWFM8AUdO_&n&8,N
guQEn?G)(d><MH8V:C''Xi9V22Tc(jb,D97OC,DoKs-^kW>kD&X([L7I3ikp.is8=^l`KeW8O=NFj%%j
%t'e#M,EAKG=tL]pL>pU,S&3H&/`8.D_>1E.%=Q\PWkh.IYlZ3H#p-Y%2%kPk8m8PG@6R)3(Q"B+nDAM
=p]G@<M^!B/sOUnG?dh:%0eP2/0,%pFXR]P@rh0^.sW%\5$_'S'VUnA,P=)kP7hRn/ah&GBFtMFeAtgo
l>p$MTX\=#o;c&/,cW2c4R7aTCg3[1TUJ@g,i:?Jcm4Au0rI.IRtTniS<JVcYrR(Q`<9.$&Zo%ibm*$\
cZ%Xsf*A$b&UKZEFdr?.NaF0"*<e'3D+?hh;U6/Al(II71^d5=V\(l,kBnu$*28U.;)T4sooT)<9ntSn
$oh)oNi)7XQ@<Bb1W16p5_5A;<*\kDFmj",Ppc:]O-?S`a08iAm_(TgBk@c7;9QZm5\F6`STAOUQUXBn
QEoWM:$^.J]CCM;C1*36=`>X_:+sPjHPp/iM78bdGupt8O,cpjk)9&Zce*KIl@6hE_[Xd:!&BH?n[oJm
j73M,NEQa18\`I6j-0t@c$]ZOd<@#m_3e!ue?A6Q!4T4]!oSC8:VaE^l3!GdkK^n'Z0]o_]cs)aOo#7d
2I9@M^s@8qdcs'%YNB\=\6=aB1IuP=:TuPA(?H7;1CIofW5rIK:-11'8$+Ze)2FC#Zp?]q6r2Jl=2:0`
"PMqi'U2E1j]H(_9Jbd4A3$_J]3iIAVB*6!&?i)kNJ^X0`1UcT\c-4?5$kOXb]j,!f`m7'2!pm1B+>n!
%6BN>14!]@D-c0YY"FRf)qf;pPnHu.lQ(gUEch9lA_SsRI@RjD%YTEeQQt!sa<[q:0$i!MFqB,p41&o`
.TWQ#MUM&P7B`o#B&aMsR;VhVh4hY90066'pa9kHFNLeT''6HpD]q2Y.)fdd5?pf+C9uks?JMk7P#R[Q
96gnd[FDlYoUCi@Tt0VXRF-tFTe(MR8W_o.Pr>.Pbf-/i#8AB)9NAfd<60uOE5s.e71Q=j[<\X>h,2n]
,9V][(Z&*BDS_WZ8MuM`c91mX^$b$tnd[r1(L0o<f[s/,OG.@)GDXqDY^\:N-qTHW;*Yo.q\.V=W>u7e
.iPP<U,?<g3N"DIhj$KL>j:Gq"!qmHM3hgI=o8-8k$&>T,.[m.+-^RL#s-OD+Yen`9=t+Jg"&!eYA&:>
4]=iM,(3ggj%8H$);F9O_.RK2NdmMkr&F3m\jgd+#H18_V!BB4)rY!;c=g2OAUngTSdf;hdOm*m)7Hb0
cYFhroC?A0\L?>lC=SbA?<Q;.IOf(]EL5BqQpJ@1Q/5PRqJX?>Nn533,+J)?DQUSN'3fj0@&PRuH/-at
'34Ef`g=KcUcbu*fY!kTb4=(_\&b=JV+ju"h+olmZ&9W,I*&hZ<<q(bAaP:6C0=U*SQXJSG%oIod8nRk
[iSm/]QbScs+D1AXo8EL4F(9QBo1gG<IS+hOs9W8*3UE=le";U^''rPGrhd)O+sF"0`*YjVTJ[EkMsh#
Yp,BE^0"EV,qYq!kuN#-'TTZ0Kin9`D.FTNB*sQkKhA\_L<[)m]nmZH1/U&8h,)EMR_!Dmoj$E`IKp'!
]<oZf[?c[YG/)9nMjfB?E5_3hrc6%&bjE+kb)r1$D9=PF=mM`6MJ3.(@3L,EBh8H9>>$1<N9i!hjjYHm
X]lkF<]]:NWFZOm5Mg<9YKKP5i^a7,<M<L)Ch5,V(p>:1I]L^G;FNT<(8!U1H**EBRjY)(]\uhWID4bk
@qk5^?&b#?]@aIlKr'&`R9=aQ[k>[ND3oEW'V^uAV-/u+c`tr$l7GN8Yg^7)P2_DbHcQL"CF&OX`(Qp[
96&gNWe.R?KBCAujeYOTN9l=Oq!B.`?8Puo;bub+i?jc<$[<A/C78<_S[D@M]a(b@`*:^S+ED7dN?P1_
0<RHFMs#/X&TG\!o`ZClD,#XqU[?DbQ"N@_e4bk0Cn=S6IN/+DUG`I];m_WCc,SDfhGS^WqfRmK;7Gi=
K0%U1TXPu2`b/eXKq>!I/=q9uIZ6uYlJ`p83r)ECe"Wp,M45K'Q:W<MD7nGA./Wn[Si:?)UC?s>Ff`7$
%D*%mr^6VbAr-2-cpnu<nS[61oV`C,!D&V7E!j-uj\KILEBYKO7Ap+4mZH>n6,'4#oer&L:aqui=Ibk:
K)4",Z6i)An7!83h!q_GC([E)_Dn@E*[prkFd6Mh0^<iG0:p"4,5TFh?+PW\OtG"2'8u;R[4tCr%>2Z<
(\o76!mW`XFSi//DAR*caq95nIHa^"Nr-K+8u%L<e@k9Z4LI9UQD%H)9mX"Fg`,^+J2=_qIVg((Ln/IH
>(<7YgqJS_;&F2RY8r[u1!X?M68b2_$\uO"#Ie3IC64N5-g+a@dO>&DS(A>PMK7C0ae"RZGX+_]p8k$B
?(njlT1?#K@CbBB]k9?l7b"di'jkdY*I6B]g+gFi;WaS^@QT>g/Tt:#EKH$7q8L`,TrW#eW=b[ek`Wb[
`9Oj?m9a\!nqi!"V.`@.Q[Dob-Edi?Ejet&>hO:1B]1kVU3mZaUoIRXV"5WhB2g.=A'al0"Z;sDWN>='
cWFEs%>tF_fKFD]s25u7C^eI/hoqjb/g#:+2gm)t:inLUSYa.TFXd>*h2L:T#q4=E)inlkGr?`"3;2QJ
p,23\.BquUkeV8b#5"2PAnb77>L<nA1(`/4NYa?"j7gL;9<\B2/%W9n%;"5=(gQs!9?rMi^Z2_*aaN22
hR`mae(Wc%C^^\ik?2EqLGnbp%0k^?\E@8_']rDSW6Ch0*$]a!`7!`:$X4s=I&u5$aMLEkB=tX7I#a1p
iOu(h5PdNk",n.bk5^CBj])`4\@^'AU*@-JH?^su6Tk7Z4SIa4Mh@hhj=b`4-p$njCs'cM%&7KS-Z67f
4C:uDgF@'Z$].,C),@-CdA4DAA.mPH*daWRdEGG0e2;RZiAd5Vq^c@M^Yj3&rR0C%gNcshBp).;lm3dD
$ZAWM%r/Y*S[WRWD?@CMc49ebA_NQY!u6"U47+7@guj'\J*#lJf7'68P7tc:JkO('l&s!E3^&D=G(0Y=
F2YlRrNTDW0Cj*?UQ6)+Kp]rg>o(a>ds[Q[Bt55e#/e(m3DVg`b>D]^@?gn^Kq'a:$d5P<j&FAF9&Su'
jmRNLaRWI=Sq5m9RBR3'^BnLY1q;'g/.F[IF:%NjC\6Z2Em7Qd5Nd[^"J&3-jgN9p]A!!@J$E?QW.tl[
R(.t_3jUJKe"W(jY1$:4jDd8406eU:<[f(X7/()>/8%Qc#2!t&F(46g*a)8B>P.cOflc]ha/2omDQc:?
N:LnSlT)oXW#6$<-lE%%]e-Vt\:f!++XbRD`4ZN97IRjqq:RE7#2^u,?EA&.-]ON4n.R_7EF4Kn^]1Ds
$*Y)QL%W#aT<>F431rof[->PVnLS>#7oCu8J,BFIp4S**ki6ur/0I/Z@lG*V5-JEGBNbJ@cc8mtVpT79
+"aA;bO-uYM'm8i>Z%'-i?`TRgp=b[N]Kn>0,FaQC!ejAJg?'?c[hk*`+56lc)Af!G%MK6C%Dui;R+NZ
87D.s0[a>%8Jtn0%mNRBQ3ktW)u7qV#opJkGA6W<-!TrWp<df@-.JkqWOOAIF`_qXPr0MI!6oW/8*j9#
b6u'fJZICGU;_%O30*iI6Iq1W$/C[F4+RKoh9XJ&^Y8UED9^p4i:t!;YtK]^jOQ)2HsX1+EWGHY?=e?c
/Jtc!/m2Jtc+geXbS)u0A33'670r#P3e8LjG0;FbG7*HX/u^bt2X3$5.S]@"F$CpQ9fmo1>a(sE7uNtA
/q/#J]D9bfBusqOpJ1Kt+O)"#Anl<SW#&<iNb33HhmBrhd@m_=*'S\(%p*I@80/e@-GlP3fRJEG';<.t
kZh6QU^PqV_AN3t<`q<]FJcrB!,kYh+363QU/)kV[Y?HADu:0%Wr"+7c_EZDZ71"1.(/nI]_liXYa_#V
=c\=5J[d6QQC]j.5&u7j[CV\61fbAG2MIjmT*&:9T;B[tGt[77GJA9kmMD2?Zmf17rpG@5OgF<oGgn.M
9BerfeE(8*U?ip\krj'=S5%n;H0t)P5*WD2XN-5WlJ`p83r/YJNd%TTO5`A^:AeY`6uIuGOkhb=2bMec
YA''4KC#dPWF+@$/nrDWoj,/$U$<59eHnR9f'V];f>XoCqLn*2*gfG75WH$LeB:*Sl2Rp#Fm#Fg>'..,
9BDFGIT7lh5XXFEl&+IM?$4AakjSZraOA11%))6O=/#"ZmE*LQ(jpoFY#0E-J0A?d)(]a7M[&UcY2]j1
F;U&r2s+Amo;)PXgc8-Yd0IAuds80883FYI;Rr]**s:n&`.:QF=1c3LXjPb29M$1GA_[ccWU%rur'/g`
cbmooJ/fOHL=fRN!i=00d.+`>PV:!.`[?s6hTfAhaX\5:=mU0q@sqk2*_d?9PE-Bp#3fVAG+Y(JeD6*J
Ho3JWM40(QA^6g<B:Q8I\V4=X4KF*iWQqImmrmZ#)A9G0(TS9cbM2,<a*iN;cg\$abB)jskV$g^N6AM=
-B8"P,^dAuKfYk;h3`=JhX>)7$a9MAoq-KpETE8YTuT*PqQ*.h)%WBhjB;!>[?-_5eseeRe.]57cbf.`
V-U*J0]$i[4g9C#;7BDb;-S=3"%ePl9`8KRV,=p5f=,%7O_Nin0,gXc619qK=gM8-LBZndD\60f`[)RH
EH&kbGQ)UlrPktYNPp"XRQ>J"5LCEp0O=Te#!-Br^V)(%4epH8]n4Z0Y0C3^4LIr4eVkGu/LrXL9RA0_
DL/0C,jh&6A!a6)?LSV4gj%bA87c'S#XI(g41V];3`h$RhsQ[1m?>tBntP5OR[*CtRM1`s4DnDKd<PKa
Jii\>E*EQqX/JS0q>6UW>dr_W)j'JSiYbm\TAjKcGfjoJ5==PMp1rOh&';L:]mT=.P*KA!gFEkAl;qnX
6h!2#Gh3NY:V[6X+ZmSFQtKN;.IDZkdBh`+S#/<c!Y%G804&Ar465NA(9!;Bd(4Qgk8N+LFb[<.SREP+
1`">dB3=B@j@ine`KPd[4E1eqquq"\-F-<?'TG[]NKkjbE/^]\pF+#Cj/;1!oBGT-IN^ej!b^kk!7.kb
Ai9-rjUm&uAQqS&V>\IkXL34t:5Oq*[&r0iKX`cPOVD^uM\:'cRTj%'dd""ppo+VDa4jA/=1^"%a.'$S
S9d<fFC]#d$elQM_Hh39r7h:5/WllDmN&7nBeAcM6TZW?7YGDV>f#\B.%)rY,ZK+^'MT2kcPTAk6t['g
p3J?_&nkoYPacc(M_9ou_`jB\f@<./iokO+``6jl`]L13f1f+6Nnl\Ff*"E<DMDe+PfUROHh)bA54n*&
6_@I5BCU'<9e0YQs2:DaJ"#&*I)gq:bnY[LZitlpO8!p+GV+alae]LJda)Y8j)Kd+*c&BP^nEibp_7)l
buJ$J=_:CA2nlKo:h2/eT!rKa(POOK]F(f$4m6*Ug#M%k()O_%>'Y`MG0]<Lj5]c!o?[&>L8DuBr38S:
*:nrNbBn]BT5^OVr:/pJD>sIo]5-!pRf?4<lBqUEc<^&)DTR6S[+P>Es3QWaIss/&s&sgPPP<[AA&4fX
s7k;",KR#@YJj-l<f:e(h93PYJ#S[%r:)im2u-+Sh;jXSTK)!C/Pc+7^<=8:IsaS,a<)LOh;f(WHqsLt
B0Hh$6]4nBn-JCHncro*q)d_W'!g[Rq-3GHq:kM-r%7nq8cJG]-%G+U-%B_0-@]f[-@^CAP/"u.T7-=)
;gXIrp!5[kUMFQ7QX:#pW`r2K2aBWAf'=Z3nd[62J%iUrm-tJLO-]u-55C6u)(hK@j7[U6a7tLrfBOG0
69<,Y4X0N@qL6;2]\/dT(RoRahJ,?f>1/C_htcsQl`'?dlE(i:o?kNqncN6bN-:g-r(-bL7K(+$ZbDg2
`fK3C3IVClDeo8ahc$u_3T"q;YOCC&qL14!`V_ULCAJ!a#A<gMi:%[!^Fp)]]($$_h8(sC?1MV]:D5p_
lJEn>K9M[#q`4[&>tU>RrjoffC[t7-`Dc7Wq9L5KbJX</,3ZWtc/sp*Z_"m\@K2P'ER,`9q=0/r4b$h4
2?1nuq3iC/J3KSi?N3^H?2XN?pa4g4rc./Ve9h1WpC-cn'CT\=q4U7GHiA9UP2#-FVt#96s8F*bqJH63
rr?)oRL]~>
endstream
endobj
7 0 obj
10054
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 340.00 283.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000010805 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000010781 00000 n
0000011259 00000 n
0000010975 00000 n
0000011014 00000 n
0000011116 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
11332
%%EOF
@@ -0,0 +1,320 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161122172738+01'00')
/ModDate (D:20161122172738+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
GauHqbDp/9EqI#9U0k]Im['V;Q@?r.@h1]19)?jOm';"aJ&t)H-EqZA3c.NUHVtlR[9/N$"plOd5K!?l
.m3h/9mj_rn=O&ph]MmtnU0j',L?:5nB8)Mo(mTCnbW%(a$5(OlcSC/s6fPuJ,,H+ld,V,QDOQUO$E[7
n,N1W+7YD@s2,p[M?!3tpoSbn]\!*f2Xdr8D#Umhr')\-?[MQdnmL$u'9hau-.2L42K"BNiU9F6QC6k-
rR#u+nB5fkCsTlVrVU"drr<"$"95Pfr2dj:>lN^6s')[k]$NZhe1j."q%`5nCjen)EQauZ0+$1V50*SX
C]7!6G_XQ$D]CuWEa37oCI#ECog70VYHRWcqDf1l/:i+QW-kJI;#(MdIIc(^RG5UO1JOb;/+muUKA'st
p+14`/BTE%KuRc*r!Lomk>3&EkGYJ37_\D6-C4r&Q5tCeaU6b.Ii6\T/WCqP6@Q!Z0i1r^=R,Mr,#Rrp
Ue/3K$<.?Eh__]TR-e%oU&<V_f$@Al^@a8u5&4N-H?PQ%;6FE5L*I$gC.S8KWul*3^_F]Z!B$I@'0(D8
aDXt*$h[9%Z2q7SToeds9/8]CE`sXg6E,\.ChK;$[='t1C*6-2q5th0Co(GiS05B==dT,sLrR&'R.`(N
:qd\0Kbj(P9(#)=cShsigT0Ynn_#D84#U!m7WA::EQU6.dWL##D'+ULQG*Qi;^G1iWK9(r@7k:N&Y:!m
o1k:f2laepqNeJ0[-Ke20XXKiH9-j6/NL4^CU2plDEi1-0J1A&[b@BJP$=58QE%B_7'Z8D[)Vr&X-K[+
Y.Jd"`M:OBg.<R#QmOHp9r&5["+[&"lRT&P$P>u9]T`i'984`76q5P0eAT=`d/&_88dmP0QJbt<Y5b3c
h/q>flchW7&ZZZq-hME,@Kp%&R&t^LlU6kcRVRLhDim1?Pr%[L@@B>s%@duu1bQ-SYGUZH+no/S#I+o,
5r;hF8gg4YB#F-pcLYofB6LISobO*!,M@4PC4".`MgVgNDU*jk`)2t'kE:!U!JgqW09.1P$I[V,Z><WF
-;%`Vdg+j\:5`5k:CKB+`"e:3^e$R]qZ^rd`Mo$*T/4_sL<tt;U/#-ee@sVI',A46ZTWZr6,nn@p>_*)
*1V#"^`?lhTJ@&<!ZS0m`bdFks"<_T0mpEW(q53uG#RZm/g"ai]?AI/^gJQF/eD,T3d`)+eAafM%Zm28
/eG/9(`-P]bo%<D/=TR8qRVgS<oRQC$^5Qh-K>0hjGXH\b@+Z:4hEL&:n,b0PZg2.Mc.f>;M4`.;'e+I
Qe!a)9O7g";g$+9a;>`!8=/eL0c>2YNV!P,qI*XO0g"F$m@lBh:nNM_q;("g$T&?kY.BpY,ibCjC)5-R
E>PYH@beKkXL&jhTfb9o3c`4t]G]>+(j@.P@PI4:VZ1,\K4VS(qiJcbQI?_</\"r=Xa@Et+kWeN/i=l"
aahf]`c[8]`n_PF%*P1<N<Au[(^Q'E`[(tIEIl"eN4Ue^QVVg<>\[8!N(^:2cFDBFHIql3JrCX1=nD,S
F,hr"$J-OVf:RQ5Qb67m:NCJT5CIRZIbSqJkMPg#@oK!d/m:94$6sb48o%8M`.3Ig86a#B.=3R2B,:p?
ajqu&i5&KAeo7>4*=katAT@^"#_B(,.G`kJdf6"=6m:bU8gmo"M9f5UH:8VZ1s38,eE!U=c)!$&Z.._J
3#g80AQNnLR^<du(;;icYDF'a/f.s[+160T_BcHBHg1T(!6RXlAR,3He=l_4kp*]PeK@Ld_.sF<mR["b
q4nMC'_\BW20g@_ldM(ZV&<4.8C[M^Q3/cgVkQ@h2Z(cVXi%JN4d9[)X\W<$@5YXW^56>^P-")Rk>#!Y
:X3!flV"*#("HqC4WD=]h+KV_j4B8pFI^lnSY`c7!IU7[Y=uZlo!86>=4V*J;rYDQXC4jBRCQ>[-r8<o
ddX\3Hi>$m<`t<mo*J9r*/jJ8dko/8q#\1f+5#``OC+&uJ8Oqho7+g:XOYMcNibDlEKrI?d<U0_4>>t!
C@Wbgi;jD2ST\,(g6Kr':fWRgPcg9Hp9%@54=_GU*#>q;gtH2Q$dF\#m(@;<,UV5(O?>AP2u./F7PO:?
Q!kgTlbOna.[mmR`LaKKecKP&DX<%,U+@.1Fk&#Pr&<>N%@ZBMYWJLS[dBacrULUp^\u*)6JZQ4.@#/>
>H3acn5YZ99%8;qD,Z'MHeM)o8*@^'oY'd@58AXX.Q@,A7<X@`P*0%G%dLS@R0&Yu8ZYe$(i$I7O%PKp
jm22+a?o^@As1=1e]Cd:.KPFi82\c#`OI&hni("AA*44m%p"EnF&jbX3O\;nA@Cm53N8=.C$*d3m-e4P
`\/sl!>j]D?ZH@.;gn<.9jG:d&5_6D0;+[QTsj4i4LJpQ6qgYUCk@%'_j_Mt,rgD64o/@^WV)+;qEarV
[J?=/49Cqs[]k3`itq#\qOQ=KFWqd8Bf,OFLZXL.VGB4oqWf6[k>F/l$``-$TQ$@<YCl(Fe3TE0;t$*5
)9!ucBaqc4ppDg=]F8un&hKr?R_LqeEkDl7n7!uI=H[\S8kXK^b$c,uAgn2X)D\4'IA&n*oN.heed-V"
>UiVLdDeWR9u/s8r/!48.H$(,mY)T>b]!k.J,ubV"'U>HPcO_cK(3S$?M"T3e/r@<;d&.U!7Wh0"^Z?Z
ga?%r'm]p#Z,b4tL8T&qVOd9Gp@o!C<i;3_#3lij5e[]aMFiGCbDs<nA-K[<?h0G!D.u\O'CoWBM1Kss
@];GH$P^9"BsQ5]fmua=igUm@CsN`<E5[43A,*_.D/a4'55&'IT&hLG:`c^sd'NPNU%%BMI]ROj(]g$g
X;\9^h\9Cm8sG-tf*/Nd"<b+1`fn1daVq.%]t'"#KMi3:=cW#qC.*9fY6L_sBB.pVJU1<O3c1Ni=J3XN
)^TcF)b9#5%Ke-D/%JRp\t4mrn%eX#-/u6N.AFIb,LpW6a01JrFnpm#jOC=!,LPf+W3=&!</Gs0.O5Ku
R$(WlKP**aHr=H"C+Ab<*H3jY)J":3bAS5kX)42qGG,pK:9@fjHuS:RDYVMMgk*\<UWG+23bMII8NU/:
GA*!.%TOk<gYk;gr+K6^AB9!?aebo!>29D83p^C-XKM3.;5T!ZEr(D$c3KIDoIMjSBmd7,<f&i$UeX9l
h=\N@^=t;fGeMdc/1.]nd)S_9a^Puo[dKuo"hc*VFA4IVS[,/jEd#,V9XDdAJXdR@`eASGNhQtMm^3\8
8lV$rG"jEV\4E)JDY(N1aI/o*L!rkEG?Tu:fC>m./IV2F-.*em(AoM>;gPmD:D#'E1l-Ht[(_ba%,Rth
m**9p:_FF7*t4cb)OO+pJY@kgAak(`:RkrgZL<L:FKqcTm,t14M6g8RDc;f&>ADl.h2.$G9\H"#nt>ti
UqV36DrIo<=7['M\/:^\MfD[><X%Mm7c858Ae4IO\>cF_/@B<i@&Z?-%mGrA\9.(rS&@@b_iC7,*K+nl
%hpq^0#ZVa))osES8hU:bN;cg^2BaXQ$>$diQ\k;B?;U#c+&U)E>TLep:_D'2)1CV2-D$hN15c?/@CA!
`421ua;<lG:82XGeU3Q:mQk;eb\Q%K_nf_cPFF;p6EOUR$T[@o\7iLa))i:M[50GL4#Z,.:??G0i^!@g
>Y^^Ue01D"j!G,k0Q*W-3o_QEh&4h,1To]]\;nP<RQkl5`U)'d)#%E@m__5!0jON:N/JJ,XM`W&[$;:2
LN0"*EAMKqB4[%f)X!(FfGPGbpD[3([2;t$;U2d;iF:SQrJ!,r_+e)Kqe"V_]fs8:[)UA#d)^Obp;hiE
S%1q0p]NBJnWKg/jg.Hc4o^NqH,D'AGE1sd:QF"Emi:ut42,_d;1/e^B]Za_][b8$:no?A*(3*(,9C&=
=!S7=C`_m7\0eYHbsuSdoD9>Y,kDT1:NUeLXuJ;MgUlSMAX+I^)PHPE\u3Cn&sPVKjXcD2@&%P=.T)dp
gK[>0&518cJZDuTRc5NoH51Q(jK8)Tbgab<Ba9o2EcE'Va,*]]/2h*9SY2?8=U;^"b<I-XeH^J)kYe&X
=oK%Y%7K(oWBMo+<;rS>WHOSGpA1F`>sEB6$97?Wk^=&dJJXPLOd;8Ehm'Ek/-]5uNHsa:QYDi_LHSSR
U3k1MA<=:G'i1K;I<)dM>@18RWMn=LB7n2-a\+LKj4B9#F=a%(r<EHF[guEuPtAfW=-B28dI\pYbbrC'
I8n,P,;WJ6C%=+:.Lg;H[--?:AX-@/<fc!KPuTu(nEXK^67'VM^jE4LbKW8VO$5/1+*a0\>'\u0QY2Sn
"aX*D=,tT;?;4J-W'^BA7)O&C*GTVWp5N^qW'^Af]%:U@Zu=Z!PE':!(St]PG$+6#F!EeO/mMR+QXpZj
95EC"MV24S9J_$DPbDloa6jP<B]c$)Ha]l&$(,G`Qiet6W."_qFjhm9a_&l$qCKsu4.oEYm@aCUne56=
rPXCV4`<gQ?HY;&8;^a`]0u%ZW0R'h>H.9.AjWUhh`'tW?`qN\r^N(lJSZUBm(Ga,X@([2`#?%ATiR*H
W!'(g^95.PPn/YLP#Sln:8SfO+7seS0X(%Tk,UEs_hC51b^^1g@G%*8b#"+8]*=[?HYlMmR-2`=-^ltM
.2fn1"PFeYj\*n_N4V3IZ%ZuNUToOD*e+40I#Z.WH3$eNRO8f5of[XE?d\@TL,PVeS`)a.>0kgs`%>;j
Z#2a`7UnUXe$-'J/o1AoSP$Xq>Ml21eA#:aZ%kGj2q+:0-)2fF4*<Z_#DW[_Nd^KZ<+`GgDag06qYI/1
cGHc=)1uS3eo9a38DdS=)GV>"ka:[DSl=XeK7?DTlbgmhN&%Gu_RkQHkulp$c89_T6IVYMEUdcifXnBA
'RiCof0KWggN;JYRA351"^&)u#PY^j\T3/XqtoH@Xr\9harYRd!KTcR?\G?3B^;k2kC9B=ASD(X'kr<\
0"r6/ZqjsP6Uf'8&f\W9[++qsZekM\B+7oP7/bC$aL?E.p/Oa+O#P*8hqtggL\D['?`Z-F`ik@X4&NEJ
in,>4Z/_(MQUP7@?PkB$\-3/0cU+ZQEluCmX/3u^`XI@[pa7Fa2K)QgoQo)-=6f?8o,8l?Z4!f6'hDTe
\PSD%(K9kS?ARMM/<hne;]-Ke&+p<>W/[Qfha8Fqq7/C]K$CqYQUiq$WcP[_(b"_7Wci:5lgZ:U(rTHq
(iNl"fnD2.9#lW,\\C^+SG>(;&hMq'M92'OF\G52Z18\%?+`A>YIFB,hKg$/BD)/Y3-,X0#5sEaU2&"c
0LN.;e_tghICr_OHso1TEHpB%2rc.?kkWq6/Tj24*7'"^=ANe(b)Nsc11[F%IQ9$S3%f]6p[\sRF.MoP
r<%PorXh<%`\DbDCZ_(-jB@s[`==Mm-**fM\Bf>.Nqp"j9S#4R3Z,2Xl$>NJ0(sVkrk@A"3D@MR_%)?H
6T6Ns#e>uf,R\u`YP>O-kL%$6^%$-I'^;>P\=Yb>6a-+Z4-"7^02.EIBK9n^iXcbb("Q`s>Rd9S<eM)1
V$9do'\3'-&>&!b`D.Ej(B@ISEm6j[Z#t]mh1FWHJC+jd@1[gq$gHI]*%B;bQ]p,W(BN%W5n%1!q2)R3
#)MgthQjNOhsb@[]5:ji8QA`RaB11;re6l7-#i3XnE8[`k>iXK8IDCgh\IjHJJXfrP@[LJ!$eL(bGAt_
BE?8pd20t,k!,gi$8%ZX:>?L;rkradMKIdgZ6D\oA56;0%4bA#oVG*aH;YWP!u)1.4,)'LNjnYkFT)ql
=k`K9fR0r:gShM>NGYLXCN8'QQ`f9X&E43V2c/To/ZsM!;NeD"U5Zl%9lYWBRRI5u/?<u")&'Q$$=G<C
?%I#@ilD,0:"C4[`iBeNeiYGpCp)Hk#0NQl&ac=oHe)RA#dk9@@bjb)86)Sh&0lfe<l$^H67VAg5l?j\
?%M9YeBjG+QFIm/AcCkDPL:'-Ua\]&&Q*>*J!(#74q)t9#-0puWkk(24C)0gU6dj[jf'P^=1L);qH-r*
Y7FdeH+bnT%N%8P:j_GJ/BeE@JegcO:,2,X/4K"t@r?]mAECUsSOr7=Qn9RTAqoJ7Os(M36mQBnoF!@I
O!(o$SI(jCP,Y<eRf,&?]!949E_AjP1_3FL7(';L;eargOf.8FA<eG??/iI[XPk).eY,miL'iQ;R@@[Q
XG5C+;675WRYO9>TRU*aP?HeFPpiSc1#'$C>hk8%fDH;#lS%&3E+/EF/K\6Io9SB5RbJalZZP[B_:VNJ
TU-%^#gT;[G;S9@#?aM^UU5L<0gI.#G5U'=f;(0*r!2(b#kCVIB'>96VG7g2EHmj(bi1anD<!*b[[9Gp
"o?992&dj"BQMC*G+c'bW@7h1]%JXlCooQs#3.Y\LEkk7&?5\Caa;9)h)ng4'gZ4"^Z?i"RKU/2r4OC#
X>ekQOAA]2@)n0l/m/_(btce7@h]/)V!Wu_GEea1HIacZ^$Co,a`%7BRj?0dcUR^O)*&0#\erh/jc*HS
hXr%@^"&0$#$of\VeV/9EScfom6-_(gS^raN0j+,$I)^t:Z]ZEWe8i#3EAq`:li5d!^W'OVh3(ch,E:+
]R-YZ`F[n)2=!ue;mdrDb.a<6/_g+Y=gCsRMW-eLWj:lf>-hEt-FR*Q]9IJ7jiDcua5/V[.e!>Q1[UcK
]b\fZWEN4<]r,U>G,:e1EJ<-DU=N<kn#>6<oomN--/MQPA8S0SGPOnDVh1*IG#-Yts$W?HPgf'")CJ(h
VeYe<?"7c#qD&L1S*.PCfg:j4j!qA/<)AWpoi-p?=1kGG<HV,6"f\r2VeT.ZW:s6rX/D+_]VfLL<q;i^
%=+r0;mdc/X/CPAT>'tq+4dYDq+_o=I32^n=$<N'khNV<^%R>Y[^h@:LKZ@6c$Zk?LN.b09g,AM15^^S
Z"hWIm8j+Hn>pT:q7tSC:V>`4Kq1;=+1Ra%in40EfO3ls4)a^s0+G_+MiW=TR^`!$eR*VM2KS,e3O\!.
jEo$LOtQBh>-hmia#"/HB:qRJClHZ2Uf[6-h!ttdFp;18eq^j`od6QBe1Q+1i,MD9.#)3k!eEsA8\,!n
mbBJ.H)"ZV01fH<jg?PC_7QkOrFjVWDR06g%Q9>LD\#=i\C:aNUe[Bf7S`ANXoko+Cd^iGY?`+m3mUki
)s,Bo?@PB-,_MTZXQc[rT95[aT=C@s3?Ih3<[m(fZ_<f4h$V%h.$iS1.qBi>Ku@#2]Y?OUro8R=IZO3p
%3DfdcT&9+JmVm5T%4r4bsL7YG0(e@"%q%T_lWE/\NLA"8CsT0GY&H.fotIJ_49flb0"F@+[G[bHp?Go
E>l=<!h!&_-^iaS7dW`Q-C^2sq:j;P=^7/d/NAk<SQ,E.B#-:GB:\1Yc/AGLfmndNC4lN.;1jVg=i4Bb
29^V$F-8CW_Y,!S[q$rKGJb4_$'/FVD'm)eEjCVUWRfr^8-2\hH_`1f8+l5qaLSE5)cHL;kKC:YIXURK
PonqdY!0gI_YY&!)"f>am+F8[:Yml=P#E,HmaPW_G1O<EY>]:<eONNsao1>L%Vgn$^T]h2a4e#_3H:@6
IqQ:j==H4+gEe[l\8;CSeO*;B2IEksfjbOabkI-7%V@s*NbuMq_FohU.dQB,J@[Hu1_eS3s%>`L-*,)_
+Aa,>^0$D]mo8nm<fb\HQ2nrENd\X!mm`qQ!fEJ.;2-uhL%Q#FfrRb(bic$WoMt]kNdZ@k%Nf[SZ#cI#
s,LrFlIe'K[T;GdUsB5=5R2,3UZ9g,m4lBOHs\lLT-F`cEWiNb4"rmY1td3?\*MPB"k\2;[K0k?JOUq8
)rXqFJY("?0_V!\8$&"0#:',HlC#=Rek`WbHIhS[?bRtG21:2=oUlkUpf5D%VbOB`)NgkhnodMQ05$J"
[E-AS:%M_8^-uA,I<A2I-+`1gM]3QNEjFa&i/5PB@F(P;:1X?A<,IC-14qGFFrq0+8>)qb$')69%(kou
YHF'<N+on!0%`;AZ,<9*e=tWi7/9>B@-;.,W'+m<&mC:Ek&ZlnV:`F5;u&??7k-+:0rOi/;n"J[-1^l^
_KVi'lHN-ldr`<lHlY[WMK:]8Z/J:S`84`IBuJN$ajBoN8N<`:7r;#UP\/75[\CIn4GD`OqEC:<D:b0s
k1KglSh8[3]VqZ#5d`TgH]=P`JQk@<g#k9hAp-Cmr\e^s*M<YiT-DT7NJ![G`f3!Mhf$rVh>%hW*4EUc
d.0?Rl2pjoX[1MOmb1cXo_Am/BlYV*L"T?R.W=gJ&:MD_^9j4dAHV"tDdk4%k=U%-cD#">'JGNAVkb6@
Su:X-_URrD$;8dXc@u>Y%Q31ER0D6JcB5>6,9kBNM(K-S*_si?@ii-[`ER4R=ogChZNa!M:/Pg-C1KL5
1a-jbalT&$n"j(#DNf0?_k*KOS>X]cFkO%h/n<sKf,o83*KPBj;D2'lTETspI_U.4"*d6/[5!],oCXo`
KY6=W5h%i-!.&]?US80<SLG2f1X8GHMEYf]36iRBX'IiO+qMt1DNsMk'uuabb`%,!(mo$F$XUp4VFflR
:e'mKjEfW)_AG'bfE:fs\NF#7*34N,XW4G=k5:Ia6[i5+2$m=Es*Z.ZX>bHG%/F9G?uX:F<s+*?;/Q8M
W0UA]d/Ce2UC2cdcP"t^PJ*BlEl?UKb-K[+(uYp-*(s7f0]2?\oj.N&T;3=7BDo2Y5EM"LSDq"Y+-L-:
q*^r\pA3,EMW=npL/2#<e6$]E6u/Q8Ze5RbX]cY*`0RV"X`@j'TJ/LW#[</MP+C010Y]K&YH)*FCLl*5
aq&uBYet2_/d0$n:I2dNYZ;=W.\8-8+$=_P.E3E9;/;Ka/V\]>7D7_p3fh-S\+r#(F=)*u#1c*NT(GFk
n5V!I$/JD"58$t'%AI.5;s!:GQGb.Par#XFm(=i;g$_o.aMXK0F[7fu$X):W96aLGY,r>P3&.FP0,N?5
k;VnOZ93OU^PF,4c7Q?P9%0/_5(/iReL`eP72!e0A7kAYektgG2PcO"+<.XOV$?/m:.WHJ?c`K)9,/J^
DQH^*2DMG\.SDqD3]u@fA"cc-k5`"_"/FFW6U,F;f1.^Z-308,2fYst*OKQ9VG97Xg=rbXSidV7hE#qV
RP#G?h@)V-"?iXOlX2>n!**_CcR7+Veb%PY)TDZFTEcr];<Zg3%Qq2U^/cS!h^QgSp8%iXp>oK6ebWPi
.DETTU<4T2f-r='U!=KHWZ<tOOIoBiE%/5eR&o\uYFQ=S/+K1+(=Dmtl^D;3WjTfKNg3D^5G(k@dcL\R
-&<.j:n,`eP/$`qPnGEr<NU%>>;Vgfn@!*jYO4!caiN<'dQZ9>XaR'$VL;B]ReCH$bI,[J4$@_2O(;mZ
biJ_dg<*#]M/1ZHp<aB82NMj^Xm[/L@`RnA+3XK*FFLGln<cP.E8K/bCdf_>A@3_m/pnbb_'E)hAZ(pU
WSI6nSjAgFq4XLm,TT,14[[a:GkVV+H"??7!J^i4e*^N!gfhPYe"%t\GL-B-qIl0qBMPtSh'.D#Za<%/
Djq6;UPDb7fd;bIYrdt_D(nT&-_l3\r:Cl.hliPlV/9p8F6%1^3\9f'A_#Gf;_-HhrCq0a@_U:?/1-lJ
;95QZj3+U6WQh"tD5FXJbq+g%%ZTG@'jPpDoEcf7/3PH,9%elQ:8nPT28)K9\(0I9'iRimVq>h,O.CIN
>NNR\IT7o9=Zhng6/CqXYl#&^ZZ-K&oC]LIs!l&0?6Z^<f-%OqX,X#\:$kZ=6e+rI/Z%TU402d^^Rk#H
8g08hA.?&/k.#-m5KQ8nJ(h2p.f1-hZ!Gn[E2[!aZ&3e\JG'lJ<)1*<LY@J>[FhH^D+KOe]3MTrRcdJZ
1pDoXe!9T+A5$$JY+r;#b%D_0A)!D_'j=V.%0#Chl6'hJApQ_NHJ,,NS4l9J^tqCb>[N4=n#;31SfGa,
%Dm\-YKN[ORG;'T<)a&o-Hd@Nf#op>FjFTiPpU-gSq#TInP_!7`Ge2QNh&s\=9"]=Z95[V;Y%E9DC5P#
+Gm&H0FiuKU2Y(uWpf).VR?)B\>1S%B6+BdUn-#pA#QD@#.)_uZSL_;<a@MhqK):0>k66O79O;8C[cl?
mt2?lfegUG*A'P0Cqa"#gY?%C/)nPaNPYLI93R[+CT0GZO)O/4\`%<oNiS-W[:J<meY_P3Zgu[H,NjTS
3"f#hSF%3LFg0%rD(WtIf2O)t3>\iiEq'lNZX]Q;fbs4s5"YHJj?[<3IQ,s$P-NSaO+M\m7RaEijcgM;
1&P1V!qkfJa7X;oJ.Bl*&;`JiY\3PjgT\C*dnbqcgPsb4G@R8F)Y!N,H:Vk;hVA,=>*m5KPf^I;N@;FS
HG.?<]r3Tn12FmY<'/jZn0t,EYhnp/[C[HX_]hWuj-qR6.:,"OhDs6[n(=94$f@Uh7.%bD=JtBmm@Y:Y
k_/9GM+H\,U%p/Xs4*LZpj4&tM"U,I&Y;^SD6QtY0A;mXGN-b(CRf!D'ao8C$q36TojI!B^DXFST%.jY
qrdcTc!TC>d#g0>P+YZ'DfMSad;Q;>.$)m7N#X4;I(>?C^Ub`6'&E+Y"MmpjURaC0Gdl(BcglpNSV?@T
^LK;@%nu3sot-_*"A7eid5p6pkZP(V%n9o#CDFhY$[o9"mNWlTei>`"$06"/Ha]B7-*)[k&F`m/O"PFt
+,]mO4b?r1SQ^Gh(koP'>%<,'XAQ8OHSk?0>F,!\4-"JbpnM[g!o`Xk2cn1>#!s)<Girbd^Z3Mse=@V<
F"I9]62cLZJ(i\.>K2U?MlI5`r-u%%FO&jN3*THJWU5!fBhYr+c!k#VWnEAsBNn@+2/'nSn!V.Edf%9q
b$u=<H=>LO<+NGj'H24&(,p*;Z;Wd\C2]O\G.rOnHiDPI;3pF30.dYDS9d/S!?Gqa3-e\epC,5RMq3r8
`(#kY=ZjNb`u?Re6#<SVi9\)C'dn%H%aLbdHG;H&2*6VZB^8#eL0,BAcPBlk9Y6>l>gohoB+M+`>MZXn
&s>5b?gH\4Q]2#sP)Z$%<p\QY"/6Jfl9ha7k;Cl2ns@NlB@gC^V/dbh^M1EcNre55Rbu\GD<YgEGhPW9
gS:l]0=Ho!@mJ'Q"&9dABacu_HgNQGgbT7QgEGHQSse3OrO/]QRA]J@dNN.B&>bklP5I;@2$L*tBahM6
N<)!#(i[6h0qd^q@mL'o7WNQbVF/(OCQNla<Z=ijZS-^TjPXN5QVqn<*V-%QqXp*AQUN+:bPrg$r'.@-
Du["rXr0m]jRJT@`sQ\>(b:,VqgVki^APaK;uOr?"/8j^?]+(<ru=,(i]A=^`:!YB9IokFG56VQrUTuu
1;EcPXqU9/2JRSciP;.W<).X_R7$T=O<H]'NtikWY0?\THf+@0LYqN,Xe`$L#PIt%mQLkbF;_u]9BBd?
h#2VUWkHBBh)8#&C#XW4=&kI(#=/sb`TDWcY@XP"Bc7Mf/Cd5Pd8'EeMLW'6gJ)*pie1cdRS@G>fX_L/
SoId>pZZXnU?E#'QBs[]Mq6`Gj4o44bBFFQM)+1cdmt##8Igb@^1L,**!Ppqa=5eFX[R5ESNR?R\0DYh
I`3(6S\$[?H?%sB+.h8(EVbpCppHmj.CF7qP@?<>Aka?8TR:PK-qSfoC;7!<aP5+cl`I8B\-An/7mF@j
qk5Z(D26<pI%jJj$o@#TW0sH7(pBAbqhlAD'6IU_&8K]T"5pR'P#ahGQ<Ft9DJqk!:&,Qg.U+11c:lb:
(lBe]2@VFse^B2A:4=*r]rn]#L0E/;r/4</LVCb*CR:.JlWPm9]#J_fFaeD(Z3TcolU)`YQC9Y\-/*La
_NsrcB92t5*_g`^*BZ!L7;pS9H(GI8>]q_pd$h_ART%ad>AE9)03J>.5X@;:qC&H(,L//]gFp;2C)'44
irfW[p;WZ*A6@Qhj"+$4TJgY1lHr(El;9[C;6`B.>?HA<gOhY9j<4htD\3^M;RF:)Phba\WBL9ArHXq7
A8u_!>E4HSL+OjSL0c`5-;n*t4t"D1Ebk;'J:MTRQU1ibfpMm6U_^r%fUMG':VPBR0_29ppJ@]6UY>*<
_c(1J"n>%0=3O9pT0m/e7VQZ3Xja=_H(-$?")-JhDW*VoC">@QNNN/[>Cq$)d#g!-!,>61g(Yj;0tebR
A"bs]$n?"\:)hVVFM%$@@A-nlVFos=ep6,<Vfj"BE@Ac3?6]!gR?)df>PHT';Z2FW(H4"kX+,B2KuQ8Y
B3JCO`DGDor]TG;H01#s[pd`Kq4(ekRA9DB92TltOMuL<5&j)@I.;lRg37:q:#aDcPi]C<4Or"?lJVbf
`TA^/RDLbqKQMg&2CpTZ7d#..+0"5c,Agds"Nb2B_FA_:dZka49A(15;)9/7@h19R1cR2Mff.o`RLc.*
orR,Hdnd=U@W7urY8Vo,n$%4AgFI"#rE8D^M0ZlZoh-NIPET]&V`V>!EaQUOh9N`_kcqX.aPOMZmOsM_
W"$^$Eq:(.=GXuhf$k*H^GW]SZBiOWBt#$#M@=@"C1XqOSM;?\Fc42p\/I_XMi-(7L7T(=ebG^%87`ul
.b3*F3`iCcrouY*8Qi`pBd7EM`!EhWF:QsMgjo!@\+Ls.EPoiro_^ebGe@,8gFXI2(p)Du?>GMRRj)O:
DgTqsGHimbLC[=-gZ.]ahR.BE;J/13%dsoZ?e\k&?QHl,P9npR4FT![8T,NB>/$JE]D4m)A".NuVRF07
S&_WhT%`TRTPNraj=;\T=18<8U0G?J6Q*2;ag^aN=-Fka<Y%:lP[QYI`Q!OJb2MWZoaFW5b)'nY5XSeY
1H\0ok%0io=KE`W+c3#^WkIAn=.8@KJU>r'D&:3kE^R0#]r2-(?;NB")Z4-sZ!Tc,DHdu>j_.lH:pcmn
;ImD`gg3>U<LJP:)3+CJn@"$@44"b?ia90;fj:#]mY&YnfIP>\"3TB;EhObcS@C?)HQ.1Skh_VmFU$*O
=__p/_P\GR&TGS39,pm:AN[*qB7UMs?+l?=->gt7)nmcp^^7W?U8_Z=SH([0)`^hnZq(LV';MFMK2&uE
MO%6O^CKBp?Or)NcE-tJL%f0&m!?[^)rN!#;o!!ch]*VP]6]/"XCh)e27eQQ12V><,HD])-3[J/Mp70K
#!/c-p7eG#%)3;762a5F"T2"@_E)baet\6SHXqf([pA1fF&A#6/[nlNZ?auWV)Wo>2'cOplr(1>U?H;o
o$k8G[cFthitr*Kk+r;A3N@6P]&RMfg`"`P2iu9t_]R?ecK6/2h7L.@g4q4+q2>S\MqN^,ED\Cj[8iY,
V7U3]WAD^o1=I/,1C-j@G454Gh+jK2RVb(;7[MqR,7<BDHnC4pXBDW)$o`[f0RB4&@n.H`euEGj$o\">
Fn50`@]Neh,7?2R%7/FuHt%.W>Fr]K$N'G`prN?9hPW3p^VuW-DL0@Jm\6>DeG=a(=nSV<SGS:[NJ;H5
DcA30)_QfUKs`i.[@ZL%p/0Gt"6!#"_>P1[q_nfFNig+GI3KH6VX>U&7(el?d'Oa;%8Z@1%Qmo>:53H@
.nkl0'/]4RMPumQPTKQ<8fFd8G4bGS/)<:(^I4V"l-^-/1f-PJTWW=?e@["2W-LsR&*hZt?%I387'6;G
)H/^k/rZ3DHZKVOIB7h(r:osD?e+]d99^jVTf]l+qtK;t2nda3q"7\&IIHK@IJDYXp!0S,P(VgsF]1%G
$=l(AF06mJ9R(3QEjE<=.?3IK,nESb;E6PWY6NhN*1="dPcQsI[/h*M-f6?SkX'GkZ=1@rRHL9<7D$9c
]DlL6S!(D8Ictr_50N&&P]pr>]&>P?iRa(VVI[T%il-m=f(O+@BKUq)PcPg`B@'Ap\u"!/:*?t&k_lo1
ZckKg.c70;:[+A)c`LF!VcFuDeHH4/'oo$GPg%4<99Teih3;_r$b@cipCiSO2^N\4f[NX;][7lPI[rDt
%r.k?;?IGG!:J9l'TXS:C$4uTP(RPUhkOF7#=OTbn.iPaR5*7>@d%<bY%`[#UZaW_)_QS<ZJhgQOq[;c
SD#t9Zg5B^PajCRGeMc8/LK]D6S4"@'=/F2mLIhHDPjOZ?hGt!;fZjE/[D:OE[JI[9XDdAJa(sKN4\=5
%dYGM6ghJ!:YdO>^)f\[2$NaKc"o<b4(a#uI^b+hLY&GMMb^=8loL`l5%L@VOp>p$'FT@'7qi`6@>^"@
-Q5Cd3;VX&O)pmlZYV8$![TS+l%@sN::q2%#9Ld#5E*1AoYsH`D>)4LN-_RgZ(Ehse.%1'Dn2=H;o`M9
:/pk_ip\#[d*<uoe$p8S0f%5r2e?ua(cO1`nM"k'cDk:-Pam5K?S;qn3fKP[g<EO5Q4L?/2eR$JNDg63
`f7u!VSaA+?1*Hd\<0.(BA>JsHT:%4*n]G1]1Q0`V`*r@4,ds!:iF?:=H)QJN12fTElLgYni2StGX79E
DUNCb`i7)VE+`GC/)7,Oqt-g")j<q\;KO5jj/+6j(?7Gr`f8G)<fH?HN9bKtj$o('%c^$5D*$^S+MUO-
Rs8Js@GJe"URcB<*?j%Z`5A:/jsKMmg8RM'0?1spcZq6_icr?Y2c]+2(tXm+Y%)*La(!h'?&Q>_IQ%-@
iuT3=gt!GEKrl6X`OLcr^<T$$K-f.#`/3Nl\@US?))msZ-H:1fElN7g%%HGt?9!hG`OOWClAQ)b0#gW:
D`Hc<(?=[L12#AV]fstN[)UA#M3C_:D3$5i/,'TjDEd=1&LL<4;>oX%4o^NqH06HF`,j/fVg"/UG7O?E
42,e&l;O-?a_K.qF&V6#G;A+'.A5*)nQ7F#9$PXh<DS?o>Xrt@`.bVNa"_L_i(dF7't@VUGlLZhIqtDM
&!\=G(%%LXZ3A3iiSmeBS=i$/AQr1&nl4E,YV5S"S??+ip$NJ@j5+9JFSkS:\tqBr?P>)Wr(^tDfkqGK
bpB\NHg7]G]o9L_3r!7/hr\$kVtAC1F_9m<SP2)U,Lr^RP<(#=U9e:+o$)>:I:9T$VoKY>hBKD1:+i*g
f.!Vl506RZ2/ftO@e(*%R`=.ZoOSqAUJ"?0fZ&p(6>Ghf4g*?3AD[u7IE@_LUACseB7lSSH`9JSr490$
VUspMCbtI;ZuLYfgKK@/6H[LJ%udB.3RobP>p&HNbj)+].SGr&kuMMC>G44[N\@H7<TC5mGLKXd,f6a;
pD:=EoEX5o"dS]+5I$234hl2'KC@$jo"="in#!9_hGgemkoE:]hJ;\X3)e"KAX9sc@8.8o9Ds<4\*qs[
j=fn)HShSZA*Cr'l.4/7YB:Z[[VnSMG\X!_d(Tm3>%FmoQlWZPR!58&.Q5l<q1h)+#^+UqAie]mC0/OC
i2ficg$R-qFae%imDtl'e7c:*%h5_(ESIHk[dJTR*OhYCL\_h#=hD2qo2TUZJ(:Bf?2@l6hrT(9b0PPh
fk^5.0W4ZUVb=SniOeC-?i'2pTUrd\4OUMqM)B#a6aa-g,tVaRVZ!BPY)1je,Y;SEW_SBss(:X,0pKn_
FK@RmrCrhnlM1Y=^YiJ\BkApDZ#.r4\*[IjSSC0QAe)N-IJ9:Xe5?,&MV&-<]aspRLYC*kR#f6*UXjiM
eqX)4NOQ:0k)@<Ko`CH5UetU,[V$97.lqicB]\L-);_,A*U*13/RG3WepYhZC;3c^/8SSBW-pt.hl3aH
d9%>OEjK%K[lf+(QV,jmG.Tuo0^nYnSICN=p8QMYTVbpjmIhQoYE(;Z2Z-agpat1/;;Q5@@nn!=^%T<D
Nn;+[ccgEe3Zukb@gFl@oti+595/Y&O?#Jiqn"q%YZDApp;CBECc@dhX%dSDOKRksBjXlQ0kZMEN9C+;
g_dD<cd1c9h4P/5htOI.E<B%51\8j=E+>"!b>2)3Ogb78HiA6CJGg'nQ"W+$3)8J6hKA^d7YWtIeWAF6
2bkj152NAb^0_tB!tXqo2o?lti;))./Tj24*7'"^e!c8IIp!#5I'^6G`ikBFDEY*m^Z2t2ZZ/df_>V5F
LLL;oSRd[Mqs:p6Ra)8V0VWS`.\[e9f=a)J;h6RVFbVRo5;N*d+@K8ll?cFNZT0s/58ichR8M:@`^-D?
UCPO8rIXL%28$?k.?@\^dRKF.eVuk!,1SeEfLp2M]6\V7$`,_n*o\cQ.V50tCO:FbY<9Bmp/@]BZTJeG
1M_IhDik+,*j%6,,]d+D-.9-tMNp-tNd7[$er;uAqQ\%'?97ViETZ5GOs*kuIpcSirAr:)`-1:L@:"9c
1kg0LET.mB[^]IJ`(+Ca*]:Qj.FSmG?GW!Kfj;R>Vd^*5G==A@*o"q9?i't2*QVdg4-QmDoL8[tAmtUZ
A>(Y3)IbE`<I:(=B$MB-4#u>/PD.<<qLQ+,mJ/\G0(usFotSIg3Bt&,Q^d;]]fF3]juQ;?O#QBqn)c[d
dri/QVanJca`X19*cI'O^;&\hN[p8:^qRorA)l1\,Pa@t4RrFVm`"TmBah#UE4[fPR6[";q_C`?#-q:b
<N>hZVPEL.`]T(3K[$fR]C%VN*sC)K>BWoKe!H\j%p\d-^.EOic=f^rUR)!?4:g;=rOQuiDL9OdQCk\4
,WKTckn4jlP&)+k)WnbW4jErcmAbqh8_iC^]1U@oq4p9]NLEVk]Pp^tDV=F4EmB%;ASJV*kcX;ZjV`(o
'$/@*@!V&UVm/G9De?NF-a)M%<)O.?pVnHQ5&]6Q3I'2PYl`;E^!0.>`Jm]b'/W9XTB*-683E3t8S,7Q
>H6p-Ij'eT*Aa]l*Yn,%I)cS!1QSP#0r;[g9R&98V/'_7&#'b^3JGCQee1P3[[^a+g?FST%)*5ldcoPA
[3[j*PqCVIVk>+l9Chd&cHL\YX;_BYOopA9.6>eOUS]n!V0s4EBBQiK2/Nodkt'5BmA+dha#E1IHlmO$
LeBq!BA%P:?.*=tk1#6Foi/bib(Mjc4]SmeI+bj/?b^1>/Bb:;:)si`6;u6th,-fEjgrj(GE\hn=s%\6
45[4Pa)\B]c1]5fH+ruP9-''Pa"uW1he>+ESXaj*j6@.Af#[!GoLn`o!5BE9$/^"H:GI:jJKa9;dWTs4
DtJlI3o,1.NMY8$EBe*_pR@1a[^o'eOaiAY6gNUaC:C\#B1@2t9C^p85&RWsT">K@c7sVCRuVNs*n%d;
E#>SsH%!8Om/'C6*e4(dT0=qO>lP7o5C`IgfCsUhh`q,6mp?%fQ[ak,rqrB1iK#&WO$E[7n,N1Ws0HW,
J(Q`9+PCA=\G$HeA#S]XJ,JU^nXi#E$U7B@hu~>
endstream
endobj
7 0 obj
17130
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 393.00 300.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000017881 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000017857 00000 n
0000018335 00000 n
0000018051 00000 n
0000018090 00000 n
0000018192 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
18408
%%EOF
@@ -0,0 +1,334 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161128110918+01'00')
/ModDate (D:20161128110918+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
GauI\bH>D:XrZ6BYD=8[@D*aW[gZO"2NFis[Lp;<e_&XGj8T-UN\O(=Y0:+<AK3Zj43!G\*Y_%?,UMQE
l1t&u^&Iq&I_e(bo:I,>^46#%^V)FPs40jAH17/1IId'c]83ZJrr1Z%q<bp[jnso6q"<PEra58XJ,<Rp
7I&5!r3noirBL=[hsqlfreE^%/cOB%MfjHrk-ONK[/$L<C%Ld^iI@lls![KRe;5+DV;s6m\1!eQH#lgS
%tB'WWkq`dpMXi.$\(2).haH5-]\+Ss6]j`^G`n-DOKCQpugn6If)FV-`oVss8?faq/`Zn!W(-4+,Z(^
J*uIoleq^t:Z2.lmGHs<J!L/KIb+1=4OVP5n+&Y^I9HcTp3^>WkO6_M:XoW`["K2&\"@1.0N86Qb!97/
[i`AHGLZqbTBjVRda(80$IBbX:JFXAQ@B\9C&U-e%mrD\NV9%9Es/e]otmI]/'uX$oFSa3gtn1&ruCB6
[Pg5f>ClJPar,V#/9c>GT5K#s4KJf=Bj'm"ZYuLQjfY4eiS.rZ)W((@[;[IO>Kpu6Fi;#fEDdlNjR_KN
;0TP]%9n`oSbg7'n*NilHc?DfpXGG9pZVM4nZt&K\ZiHOJD*Ie\Z:u4Tr7%153*&-$[YhmEC=h.W=K*4
oAr>tc>n[gPuR(hkiL)*jb(n^jooWR='mj1I?[rcY,!s4nM8jL(0+kUi#j/cX557)4k5mn6acWE1KEc=
&JT%^q4#+5N8jdR>LrEXkSq$N:>#@7bQZrk:ChcW.YOC^*h6E0[S;d^2MhiB[\C&4_Cc_[r)rn=i+up#
L&<6Hi/)_7]'u)W7;Q*U0uG'>n+l_M!n:.`r`L2f"R>o*<olL:i#5Ec,XQH6,4R6,$cHZE`Am_KEU20E
f>6:?bU?kmeu,@)ZC*U2)qLMqITEKU$4&:;;CX+le[NJ3a4J/LKTo*/D4r6+,P:Vqm1?]aUQr^D6^762
YOTrrrW..FcB-<TipZcRQ6rCfn^kV+7`',bC@R-:B'Fqh_.rL%r34bbb59-=iK9/uC<n8.HiF$B;B_0o
?absWKcaH*aB"@"N(".tQ#9i=fN+%<=3K@&HBa1"$]rWc#E=\T*NM[2<=Kh\4t*lF%Es5Eb<%B4o"s\^
TOqkIom#aq*I0SENs@o?[QU$pom#3f#REf+HBcR_%r<OLS&AY=A"g,iD"W%?+`/?+4UNI<e[$s]T93m[
LUGK0NsDf2p/acNX0!G7g9>nuQOU"9.2PWse68V9j.HTNj^YAOH6(Fn4o2n_CnPfWBk7=5e9oX,C*c=T
$a00=,fYI/@?69jNekel:S!U-roJft[rR6PPuR(hkh5f/5_MDd!V6Yn>^]ak8>FsqjceEF`62s!=p-8i
*$gpf]hteUW\6er@dOhAWn-tj./:0Js*3#EAq,0=A^^.kSSe$RCobU/D>YY2$p?bX:2`YBIjcXA.ljW^
H=<bX'am0Dm#o13=oSSoCi$kJ^Z5nfdHB;=D=t,9`0QZ$1[IF)Sq"b/oqZc4*el"<kEi"pn"IdoXWDU`
o&e0pMJucuq[pkR#SL1q[OM%d'R-6Xcdlr?pt<eQR^[]5ghXSq$8hE-Z.e^_3%_1--.R\(W^l:;EN0g5
R7eQOfR(]&hYmDZeRLeSIBuM.CaOQ8:/HYYI[cD\=ndo^8Oh\7BM=,j/!5[=#=8BZO1&Ud+@1YtH?dc_
,K9dBP>KIRr%(<l9^k5=e$Ba]S-fCYaDf9dZuD^>6\De.[3&@MmZT\_/'H2]qb19_Q"dk1ggPW#?L-rC
%hf1Oe:TEeR;0T'D:@[Lc94GAPgtLhJX]O$=Z//ehL?AjB6!eJqA9b'm:lFo?n30c89gW2i!>_^3B1NK
'4\Zf:`c^MZIPo@_.s*JVX=W[bh!6aWk?,D+V"+`<iHnag\C*0c*(G=Zhd.lD.t2+X(qq])l9_@<9li0
X2p!QqEusjCip[^.k>OP^lMN2[4^V/Cc-ILE`X)p"TJ721O<L,a9ijHNEul$>;$Crp7X@:]%CcE`:f^T
/ZVFuPB4W$EKK(O6Wi2Rd]oWbHfWj:-StR2K"E(gR<NY:'jI2eP*>L2fKRJT@A!*W4hIC^BrE)[WS,U2
"oA\!(=E][_Ng9LGaWM?8XVABYT@dHq`_QtAWA,p)+3/uRdJFg,g<m"Lo?mOM=]Z4:W\<sE_sSt<k#%d
RUjKI!`5EYE)%NHY&1l4G\#)=:^5[&lV6K-)J<aAmr8R[f^>YEEjKWV;"N9.6eQ3iPir(bf0"Ps!;A_l
q7\RQI?T_M/Y[tFV%[L[k%r8+LsRW&*j4jd1,!]=C`$D!W?]HMgj>W5Xd(,G[=)eJ(*,4SPn,cZnh7%d
,0I$pF[W@^L(>jsZdRQsY$(#&d@=34q5)QVbB5;>ejD`BpJ'OP(dmM#=@YXH4t.M&^CJ9Uq`=O;nMWuX
DQMe18,cu/k3m<>f3Ed;nKYZo?/I#1rhi94`a/1r>WF52Jh)Ns0'$bb-Gg*Pqi.Wca;<!g*.M)i]_kQQ
EUd.5h'aS`%pl+])![W4%t>IsS<418o"f%G["fGf8;WX`TWT)G`R>5aNH3sFY@]2_+X9J>$<q3Z0oX@$
q">)?X/q7uX(9Z^_F>Y^jq$/RSi/b?VkM?-ne%?VifC4S_O8me*is!pZl@RFCHpFT[+-8CJWeB4h*Qjs
rCK&`pQ$i?(VVc\,cG<'R:nIdOY`Ghpq_SFU_-.&P9uE/T:Rt6U%.@-7o3f;SK2NTN-"Qp46-<Q3r,R;
*0`1Kh!q_e6E?RRBa(KB1Q=qOa@WM;0C)oHXm"9(GGCIU0C-3m's\mR<_o9i0B]t&5I&9lE[,Xs@hoE@
@ZFUC#&OJJBA<%a)qrMQMQ@]8#7u"B2UiA,&I`)j:LGM>R6("p+5,Lam"R&5.+^Hfqa?q<SCttVNKosE
TgUn?VXcY9C1Z8@]I)(/IF?-8g/+:)C5/DS25mU:3d']qDl+;u]X*p?\HSPXYfg(q%-t\c%FOAID/.3S
n/;hi0`%O#>H(O+*n6mc"K[_%?HFqAWrO#'7qf'PW=='S,*T!iR]MY<TNma`;P:>Nb*?nG(X(S.l_D_.
?52\Si2c74I$L(:;ffb:WkDT//Bc8RKro7RZHZE;N[<AIL3/hoR]W:"]Uc1Mg!S@87%O21B(U[EF0%qP
]b%=h`e0N5L=BI)M6-tV7ONC+Yb90.2IU!<D!!uD)`EW-?D^X[PD_ie+)LKVA`d:4Z%c"jl)b$]MNTp_
@:Z(d`S-Q2lG3rE(/)#dm0?Dp2<r[-Y*9(+0R,uW_rNQ;&]ZhY]=A\Wp&Nh617_V9[oKJkcR')qam5?O
F!b"N]]@=?3QOXYP23&t\S!aAIqVn>Z/HX0AF/oT(Ya/XN.nO#IU^LP)/$%Pmr8R[9^Q@rDN7.+;Y)ec
V@FXB5Ok0)"5IMK#+bV-(j2'UaHk/WaUq`X??=%2o#jL;(\]2J<?1s(brJ5X"I]53$!#uLb>rqkP9*N-
kTK)f(H,Ujr[!@aQ>6c;YA,q26?GhXeuV8dc`CYqY1/p"9@Dd`lVqN!LP"IPS%c+,c:4sQeGfSo(lBBA
3nMah1al@tru%uF\/=%:=<fRt-V$Q(1Q3@-`oNTm'1Vm^1[66p>Me`E%K4Un(R:9UmEj-s!f?*]V,K9'
#S09s<f04#crWi,K;&;KVR^G>TI$%(X<-f^'#-#_+pgu5fPnC6@Jdl,9E!NeXk97@mV?W=&hc/O;&o%H
gQ\'DJL[EB;<N=YreJmq:&rEnhpJ-O1![n]DI8Rn+7"E98s[\ihgmQu^H&:n;:T)[N0(.iNVX_qg[!%+
Qi#hiY+$mc^T?`R=3,\AWW1(Vqtb?HbP`+QO)E7sRf$C9RV1YNbVelm.V]ocCE4ntL#H49FWGo#&aC0M
n,/5!A9Rj&n+s"40F"2$)8;6NHu-aL8CrLQ.Jrt_n#Q*C(U6R7(Tu1,*[W\WEL![EV8Xp$5!0$u(j_W^
8?9,o)QU7@pFPBYX0h['lL\*14Ge3P<SD9O7MfF.7g&2'SN#ln.W(?k!\&NY[5L0MX)qqM[7UPOZUtVG
.Lk0\Pt"@$=6[]/eLE^Rg$,QEkoaTti[QO@ENIU>^UDH<D>oh+CR&3H\[>$gqNGES2D;-LbIC1=NE0_X
Y&*(j]XCuu=9Tp0d2T49)Wt5!ca`j%NE-NrV%HsOEM%22X7BGDJB(fh+kUVdZq:SCW5AsX8?6jo(rn+C
^*)GPY0rO3U3/Fq7p7)-S_@:q3>l`Kjf4TGog*poM[kVE>$.g^^>-FpUYL8uC!?g`dZpf&H-I-s`4jJ3
WSZ+kX)r2[\P=I%H70'e^?Ng@RW1s\kjO-C=6WKUe:!<1+1285\YS\W?5ok%b@I>r<gQC<N`Fg2o>\+A
V.U*`IS^MlkGfm.N`EZi/?[EZr/J+_3mYbpD>mNkpi;W@"23)3D>G#R1s@HiX#+ec<Ou+P@?n"^>ro$n
8J)>Lj!noX!m)Chh`,9uD[pL#r_.@)<p:f7j=3=2nP(hu+*HC'!ZH?ddZa8oX#)BZ-G)O2:<HDP3TI2@
qB#CG\4VB/f.('Q]iJj*'tRFEU0+6T[Cs:jGI_@OY3B8hbH'DrhQ+"]fB^WQ0)$HkdUR=5D9%=.,1CV6
j"K>:fhR;ogi_XOX\tb<nVk6[@>NZ"^M.rWNDKM/bBlk"Y'Y2S[M!q.CgSI>0<n-ao:pulC#>2*.PUd!
L+;q-&!n1![.Z5'lbTme=Cg+G(68AC6g?2ad$V,;^cuCDaSoj[0%u`ST/,3_5mCVegm]?qMZ]IX;5&IH
j`4.Q<SH_DiL`Fe_ESdV,7"g_Uq\V];c+2*;lHT7rtJWkgcpK.B(o)HqqXKurH%uQH69TY-lN"5Zsb!T
P[R\!iL^1jVu*A#NQXP?d@q^!Pj.ff_*<(%1S`-"isngdRB;]$@*FV$bMbWopIBN.:OF_jp4]Tp=J[[0
;-/%q\/6,(A#uP^VgM5MNE2e()'11np$tlrme]abjo0:-r[G3p7]d1NiA%qU<kSk[0DUt('LfS',=S`]
J"oI%5Xg%]T8MJZeU,FlSISu/;i.n'$A,m.qBBZrFmcd#T,MKRiH0QF@/6!1s!O*sC+SbU5B5a;o_s6t
W3<b.o8VjmMY]MVpnu,LcLKu<[2I9O>UaKq'IE,4G#qcVa"A@>!W"rM]5``HhM&3DS^q_sMbtZ6j8C*F
eBrdSNMO5((2rPH<r3Kjb"(H:Rs9Rnb")2"en?_`0=9X8P>'6\*%Ntq<`X)2>@(HVRZYB^f6gg^>)97d
1h%)Ih:UfdK/R<8Z<;0pHB?/XDHs*2_(h`KrmOH>Vek8\ZV?>@aVF3p%!krNoX-_(?!tiVC8LR^b^>MR
\6Nf-2]K2t[]sQ7%3?=#P.(\"Nmpf3\jab*W6!OrPW(>b"CkbP%j$hO>Q,.d,&h?*j_Z<IajU*<0+#.n
</5BJn06I8`kXiP1Xn)8VVr0%c*:c4Bc3l"j4bQ#0K,Sc*fLQUqQdAQ%c=/B5*'X2Ep)q/)X>4gRtfMU
gU)87@l?eF.r+i;JM,jBKqU@/*it.R=o(&(IZ@OalAt"=8P%+bg[t3ODq"UH^.n6keoZhehi.Q-D\I4;
a)MiDYWO0L!V-+6C6riPUD:Mf+]Bt@S(BVI+1j>sJ*Pc^+26!AHRQ_(iOp5smFsIWn+\f]G^VU/5"K+-
..sFLQRXqAS#Y"eS*B%h9`L&i;d*tEfm.;V_P&hgcG7eq0+=tnCa`#O2.*l,o2BFRiD]cQ2-5*+6>I>H
Xgr7!b[2If0<Me5:\K2j2%XNI2'oER[&bOlX\*@]o[ZWM/e>jYd$h(TqpLoBf?fro=^#"*TlFekTZa/h
>KJ>$B%.JtZaHK6>-kWAL"9Mn'b44,)nkaPZt?(O$E^ic(^-Yh)VUP/Ch'e<CT`m=C;6HjC!@Eg\h:,<
E8RSSL!qm.RdJjYC!B])%^!8s_GaWZNE)TSZaG:9em*&<%'@(O(&'lZQe!^*$a'6a5%(/X]!UNo*;Ms;
[ZS_!edS,UXkD&0Xk?OcZtAf#B[&f92%,,hI&3udJ%>;R/p1O)Q$T^Ea:[,F>-m0'=u5rVT5kbH_GMi0
XEf`6*dW1BC[UHs;n]+,dco]O3gEh5TkJ4+hXnLgB&iW3C!FM%#=IVM3r)![QQACDp\-Z<6VIDANr#"?
NJm\"<So0ar2+[;c49#0djf:=,dn=66PiN'RP1W^%!jO?d@90W'0.QB'Am'='i7ffqd>fgV"rZ5l_4,R
Y,n>mTX<'n0UG/u_+_U#+39#[HsB-;1QV_GbsrBn1`qqsRSTbu;4::?[?I%TAK6F]+)??9bm39SBg.gZ
ZEJm:l^<u3#hG+""%dlS5">>cRZGX2[NDjHdX8D'K][p[+Z(:bkg4]2B.qNM9(&DK==[!W51[SmBg.8Q
BKk":)4HWZ[9o@uX:B_Oo)WDTc)9^@<]**1eW5GO'Uk)\Nn9WX/iPVZnn_')BKg"`jU-_(,HM[FbBJ=5
goCZl2qQ^!.3(F^aFG'7Nu0i<K>8?o='=CBa[:kb9),qQ;di4\R0lEpcnG1N8rD+n.jWG2>9oETV<?gR
(2Yqm`TdQq(/Ft.,Wf1en2V>jRt7hR(c%Z\q.%66c]<eC+Laj;RJ,DJO)N,3iD+$7LEJM)iJHdRI<M->
[DiX;Kf,4*PO>?l'_17`4OE^CgF<Ye/Qj[L><sXE@3D6#g7&p02VG<6<:4(Qkn+Y]i&f%+XhMd-<%E0<
9U>'d4&27fnr!e6WqHO7XACQKD<0?d_4E"eQMuCE+TMis:sGLkSH_kW%=aP]H3lt$";W^0M)fPC$M7rZ
Ap4/NOIAAd&Z"R%#/j'8<DP*>K*O?T"4I=a2+8<@'7!u>;2QJ%5M<s;`ikH6ir3H7E?G4cQq("[S%L0L
E?V0qJ)%&b&E8gCAbhApSHe%;[c[8JraX[b5"PZ_lTq_pJ"4W/iBIMo2"r*Hh!3_oa0o?^d<)""j!9ig
fN?]O`]RoVs06P<NsdBcs04m-jZg2"7QLJ.`5"t?O#qtFjZh$9?MKT;h<Y(#6?:4uCpok]gj]`-BZGV8
33D7+7^upt!fI+Y4j%Q(Mr[*/RMtf?CRi:lI)b"@a-.]&r5U8U=5\k>i@gdPJ3?,l]Su3jSL?."q2Z1L
7/l5`0b45'iu)e2NsGJL;-pjoU@5Od8=bSW:u-WfEmFX(F%3:o'->PqK>N*h/H7H=m-[(ZPf2NFem+=:
=E7Rdigh*pDkl0g/]F&OLOT0AWCO(GJr9+[oQC1R$BG)qCuU.G?CTqBhFdu!kMndE4iI56>f!H;Ns@[+
r5T(.DXK_YLiIY=E=-T]s&f2IU:eG'oH3rc:&f3B)o@)0)<`RMEE?Nu4ggh#*<'I,n/ljH1AR!#Q;dX@
+[a9>++oolqiC'*2emh\a+'UG>-U;EgaE,A(,+*cgr8gO5IRmX4ZrKXH23L+k>OcoD5nBB+"(e0nfMY;
_ge1/8bUc1]_ZqEH&:&cjYbX1j[F9c]Th,V?adT%n/pDWj$.GS<GqKBW`?%ap#ULdqiCEd<>*X2:$R@c
#<d/>UD_M5Q:IOL]U<tB+#KMP$[u-,Q$MdAj,hd5o0S`Z7`e3gmZh\`Ab0ps1D`j`_l):]eEZ4^*do`h
TK[U/k_"GkcSZsem\9qg\ODYF6hN;3b:6CKmBDYM[he6[,P4:>>CQ,<_g4,U9431Mq=kM['(nk.TSWCT
-I<le1g[cE6#A"Y7V=h-`eM2Mk^uq(?B2dVRCc2?J+!(ibApsh%q9YEi;k5O,?QJ:Fh061%?8o>-ZsYA
#CE%aib+*#MZ($]6?;h,2OQDgo\2_C?5WNH?s!XC%?>a;5b!5kR@Sikoui?eB68@b_.uH)GLECae4$Pr
Q3tumh@=3"TUO.91NbMQ]JcMCF5tlm>VWdo8gYPnW=To/$AN^l.]f@h>t$4[D@rjU806B<O-_Irn43`#
IN%JhOj`G,5bs"*3IaGm_C@TPTL]5Zmh)O,81.U_\W:d78-Qnj-g>I0nKnB-.KiYF_M'.%",$-<,Zo-$
*fj8c.j@jl/W<4(DnedlGlKm(!PK">&k\0T"gh^18;5#U+V^mUMD(#i^j*);jFi]\4l<&/VCrRE$J.9/
%\;4]P7o;(Nr+K2)=4'pDN6k8_=N09j/4[oCj?s98dpYUBCIoEP=sMcGXR,A7fUrk80.7[-(l8u$boMZ
8LJYlV[?eVOE4]Qk<-.-][^4#Lf4.Yn<1LRbWqDnLk;Q?nHRAbW$H'F'r_bXM:@j:Q_Hj348d;=C(1NE
75oX3SQqGkML.ep__\kR]it&e)OcW!LH]D(,?$KuD3iR*\gk*ppP^#VGB4U>D<QVtc^Uh&jV_?83I`u.
rsfOba??SN7]kIqO(ZtH@W*<>)<s=-nE>KiMON2?.h$h[0Kc+b)J.O,!21Ij$'6QT[\)b8$#Q]/]NOZL
kB`j$\RuVi-hfL,8ggATI1U7O;cBK3iji`^J4=u#%F-?bK,?238d8jaHdo0OB:LCs?K;#tqVZ+,c_t@M
2cm[UUT;$jUFY5ndIm(03caQSHMKMmV0nmb2a!k8ePk5gbP"_W7Pf5Ja"s0(B>F%rk!iRa>O?L*rAno,
nNNPk%#+W;P!8HST(KmtITYu[lVMgqZ[?ZY)9pe8*7*h!5>!>+Ar^NR0g2:#IL(6h$gol4Sl&gBjIXa#
--eZKV0H?]A*6QQmMRU\*k>pji99CpN#&@fa"po'_/lZgh/G3f1MZ$[b;9"E]8pU3?oR5>;+L$l4d[9`
a7P=V69bZ;UP3^5i>L0/9Ce&41+i6ZZMhg"b5NF--oDe7H?dR(N0Ze+MgIq\,,ZEP;//hn)7>C$DU2u^
2r-8nGX%f_UHYjK)1@K+3FU@"l9;/p]nbZ4io:>Vr_Iq=Pb'O3GT+=-VB<*/_f[&4l/W-E?l"E[\UUqn
$fers>M!c=BE@-uWB6_*V[;@`gdtgNX`1^:MhKkAH8'S8?d_I/jgk]GCScNe5`L!F-eI>;)>2i7<B\m!
U-k.q.]M!l-sC`A(S9$s)b.`'kEoSgROOlm`N(]\*A="<=P*'%eW<5^`N+h:<VPKm?$7l-fp#.hkJ]L<
McU\igV%j?lE0R8Q0k/mo2QO^,TC(&#Hn_G]UE*^RMW0uf$*XC*DA,Xj6ZHS5=dG6fe+**`@K\ki8u77
391tJ7_UeTij"!RMcVesJR6!p_b8n>`c6:oN2ebJGSTb"m_u6:<:+r#.MO0&in6lrnD^!YVNc=bqk)`R
fh2#uZ&T.6(KW,*7\mMq0J0q^gm32"H@;4LEhC"_m`"4Qm_r\Ha,@uA4ghu;D!uEE`+kLP*d2lVjB1?Y
<Ru?/FuR=T$bgRhm;`Zhc83AJ@lLM)hrQ3A]OlJafd?uM&)Ak"p.W>Zau#?>-ET_H@5BG<crCNZhMbsG
L9)0H9plrq8<LK6(\??p]%jhTjt4H\qu./PS'%c=%GCT>E<Q5,ZkbZngb$>0>Ve\qQL;XI"$q+r<X7KW
R;j^+2#=ZCo`+S=*n\/;`qRi=oR65i*At(3lo/7m0ug6ofabjb8Y)t)Z<;;+D-E<A)H;Hnp-Q[a5/<^i
/Qems.eR7r)h3:Cq:,j@'Ru=M[U\l.@X?n<X^mCjW]/)V>FiSlPHA`pNAn:,F,k7tp=*U+mXns8JWaOl
Z.1ir\loR@p!IB\dTES9maV7<2stoHo2k>e@5^EPh+@e;.^W/?Q,)1JPm7/XA.Q);+tIW/Q,ZSY-hsqU
g%h_VWW+R+GF9-;5>0%Ea<ltMUqKk@XYb[:Y.Nf7j:a1374[$J2@n6,U).-RV9.f96n8^=_GOXh,E?^=
ekQ?gqOrVS9pSfu6p;m]J)7r']q,Fb@kr-raX)"/niRi"!i.Or_`#JPQ+3g&cq9MT_WFl;h=E^AV(lgF
&)+uZY.cE4NOrD/`k:AE@?cr$gVAO>?KD.)B:]oZ>GhB93-!GJ*k]a0NQC1AY[g`(5c'aCMgK-6=iCt)
,WVFFa`5dr0M>^5Wg0T,P"'2K:o6F!iC5?B?uJM!j_!dl;/<$l:bC\.o_)T,..eiaCH>g[%T0C-UfrDF
Xo3LnQW>$])aKG_5'Z"olcSgW)7hN'!gN3)XYc-8nDfsc@?].uD&f)dh;(\eW!-^8BmMf;$q44P:+OTQ
4r\%/;-C9S%'C@]!f?*'>A4GrSP1P.A,A(L+]t5G,g=*BXYdgITYfPQfjuqhlB0r_<gl<(:KhI+-Zs^P
p)=5gok0&e@Xj=p$*If87_D8B9bYQ/h6?<[++[$u?&1OQD/q/OU*MP;<:9Z>>clU;G9=GF8[?*AV#b-[
.o#+0cg<$D?40n7WpXtK>DlD.lcXC:H`T''E^aORf=oEC$7h+6[b$l5?1.1R^V4[!7;853ZBn)lrc6fi
@)A8ns2:&WaS2F]^OHFed*C.GH0>ua_VPoUKg>FdEHI_.lF`RPGPFD8EH$[dYM8aPmoabf^i2!`hH,/"
Y7'7\@jg0MKY?C)c>Sq,ZX`m,gO`rP*`&)@k@Y2f:/S!Nn%]Z>G-Xh(r;hYer,qT1*iF0kW$m;7FEZcO
=doUpEqCG8;L<)N!8BRT""0$g[u4bS6=M+]M^`hGmLFnRYcfub(q#0(,C7nRpkCL5GgllR:*;X]38b_i
Z>Z3A:8BesW3&!SdfScmpP#N;^rYaNE6qMY5B)SUCM`pe`F_nj'%F2<0_;m[NhZg?s25KB08u)H+Du+S
B*5A:18GSK=9AsV)B:8i+ktOCYd=sO9V:]EUdDfTb72sT](1#BJM1Y0>jp3ghoT8*%ZoCD*W<hmR,0(<
U9^j8&E#gAID\8*ER4dMAU]\MoT]@hBA#.KA&Arc"$F`Wn8q=*VsSGu=mL%X)3HS,p`^(*<B;dK2?ZUV
)0[Ulp+XNNlOPn#b_/oif>4dHGl5U.WREKHCCT=R$$>%L<Q&'s3S42I:#i^-M$<'^37E$0`d1"J'.W=D
/lVTTl'+JC/NhWFGDnrOBo@`>g.?-O;m3qq?BSu\WHmGo)-KL?PJ@nJJGo^/9n%\-OFuqrk8^"/d%q/q
m"kW)qkPFA^@MXW6^+nd5;f^59"@-ZLY:<\Si$O5_e>+[3f@5s<6pj=BK2P]k2D\sT72X7C3%IZ__eqa
)%Nj%Tro%h"c/=Y_I7>(2S7sbliXDe##uI"BW5"43<$L/nhX/oj(n,n1iehNH")Z+]:>$f@649Bf4jd2
+.aoI&21c;**V1B/\o@VdDMl.6Y/=TL%??lF%1QRl>.31eb`g*H.n!4AFIZ)='mq!s+1UM_H=G(_4)sY
c0g;Gc9<2KebPXaX-8;`F`FS:CH`+o6p3YLFOPji6mbtk*&dd[)!5'jRP-"a2kjgk("Bl$>Cu'A3sPcn
d0@@tcb.9H$]WlcjCsdMT3:B%jiZ`8gmS(j4TJ5aP:LLPFp.gMo*Q;26H:N;Xc#c&op4tsC_HmD$ph0r
S(IuW0r2.Z0^1j7-p51:%DdEG]=[4%p'uPPe3P)[HAPM'Zd-dYc>X'^WY<=/]UkO8Ri&R,<qZu8U^Z^F
<0X1WkX&!IMN8_Gf>3_hR^VG]Q$B;5=phF<A,DtYLh_0Qa,nEC9rUY$ELd!'2U8hl-abnVfi^-OjC4YU
8&Gep`(_AFZPIEua3#/UY9cogNib4HIQ.C+c%ZSG7]ShFQ,]28dVt>c;"6gLO@,hQGSK>,6t+m")/))b
&[t/W`nadPbb)o`rLc/M[:)lmi$::B[C]Dph6f/3\nWctWKfM8iCW^"ei2252jBcV#O%-$-W^MBL;GZ%
X>j/M,]Q7F]#1262lK/Yq'l?d3OP[73Sr+lGNB`1D9Uc']%TX'@&+9.D(4O993N-ZCoB!.8Mo.^[p6eP
mj\'GD4XW4r%Q1Pb::k;b(DJ2*_phTqJA!,$lkIn\s)G/P6$`<VbCEg/3RS81'U>%R2YCUm%(d?3)U"C
:$)1eX^(l%7=n%Hg0jAgUd]al$PY$LOggZ)OPWGLR@FbGnX9k''NM7VBW_9:"J+/8c[Jt(f5Q2-%)iTl
Zei*1;RHVWQgd@0Vdu9)oL5nD7o19O.aZVe.Bg"nrURUo>!;_rnQJ'&`VqaC>W^K,e]L26b$LcL+Js7[
k`I\RlYjL8]+%G].EMd`%OkE1#Om;?+?Z0F-=<CVYe=)t?OgS:-s%dN][htlZb/`V8qM\kUWb":VGq9V
qGMDP\uXYd1n8JM6!S:,VD%():-R7]Rlg<ab-YR(r<HFc8`]n7`nig3p?%*Qp=47?r%Rj,PJLJWRi@g$
qjt?=7?Ln>1En+i'qt0ORnpW9@W)a(mEH(N50C5g^E#PGqjqo_`85ksi%.caYBnOE$DbB2Kggn(IK"HC
C$GFXYj6r1Z,-@2\NffMJYRtud=V<oKCXM$mEI;#Z74i!4719%q>A*W@t_)[k(\'G^9-6qO1[F,f:BL9
n'*6YWj+JnXM$X.mCkNON#HnCPa>U\.&euR$;\XQ&_``#4FF9hlU[%g(6.&?-Os;if9P2pHh$j_@'n(N
^5gk4B=,hTFb(i<Bs<V3M*BtGf[(!:Y->fgd4g1KY4U^7K5b;u;1>4Q'Gs?2e3:d@OsJJrbOY8m&)Vfp
*\F/meb[SG((C`,)smN[3b_U9)X!"I53.-&JLtkSj=60pSoLn,MDVkcG!>,)#hjq!\t>8=LBaB>+l?3?
A3*=]hG/?0DobnrO(%3,:i<2l`4LoXL;KL>nR:g4##6gM%*FY\ku9%<KdeJ7(a4/XN&I9`lMqQ)_G`Us
GX<Y-W+dg7@h"^^aRXN.?Bm#;ATsSDk1+f\h=o!s,1SR/FjT')L.7Rk*If*bn]HsBNB0^t`Ob<i25;D$
]d-T.XX+Ob7T8RGS<L?ZWZt'[cj9LY3+Q?!PuCDV36e+eJtYX!:M'D^k9ccH1o/^WX'q"mrBZG_69)[h
cK%pB&qSdahAFG#<I1>g0PB<ZIW3;Kg?Tp9D8q+%_AHQ]3&rA;Ea=PcQ?BQrCF\),LcVr0<Gi:OI)csJ
NuN;'as(a\kBqV*Xu90r93XH%nCtae9%:l6#^tO>W[7(.-^b$!l5\2lH@+*Bg.2U#L*[&mW0'UCWnIa5
$XWbrNf<\:\g"P%0+1D]hXcrmakmr*\)_@6%t<K!HjpYr0<C_BE-%'ChE5S\2j#n#G:e>mgH)J88fcFJ
oR\*o_(@B[HLPLObV`,g?@2E]TCoE?m]4XfC['Jup"#Su]nR._96ONk,M@DGbMISS]Yc-82>EcsjLQI\
YMl=KG<m`/X]D<[[REs_I8nt^6gg^qo#EVI2Egm46d#)=]oc2C/\Ech)4K>NO`J-4>#8_sNT10s*D#n\
^rp(8V"SihVHkNU-.AGtAg$JO.J`A=ZgRNn6Rs_#2Kgs$*UHSd-P`h%akf+)&2`aePK-53hM^"'[bH/V
qs*l]6b+:cYE^Z.DIG&=E6t)HIeh`B6+Lpl?4J9FgY)G_>BI.bDN3f*]#L*%)X$&:X*0c:5&saY[,1\,
=pLtd=E6EQ3ni]JMi,3$Kp%\Egj`hM1F1)8(8(U(dQ;3'ZEV,6+<7_;i#Ko.Ykq8a/LfBKKOnpnI$73,
)I@)7['\l030*78%D=L)BtL^Z`GSc;mXf@LNo`0']rnfh$Kn@E59/^d6plrWk`J]bTI*V8Fg]JB\*^2N
FG@c$^D]UhC%(\ge^mO/@?(4Le,UgQnoB]@b[_;-I/,<EbBasV"ZHm);4VudYSCbViPa4af'_f%<BQ,7
2q5A'g]a[F(>d`k_a.MgXEP2+^HVLL*m\&o[eJ"obD5@B<X7ad`0V5^^F$i^^2Ih/IjXTg'43,NPpE?B
np=F*V.Sl46S$L,cC#-:2`]JQ[89BAQ^V8YY'(&M[5d'<7=eho]Wff8^I0V(asB3M[ELsc&6t21M>Ee1
D3!9*4AKYN3he9kO.49dPfg!`.#8YpoYm>-M@i*AhtOso9J&Y&\ZK],rJY5:>D`54>.iY^7eo'rKre:4
(0%,*H39i_:@ghMAiE7Ga4T_qT?+&0JI`i^[h^1f@>3]NG]JRkf@^T"d$N/*n>'7D4$5c(l:ScH1qd=/
;@hK@ofp(/ce^0ob#,T,6=B)^%m#p+[77Ypp0a*FF46IJ.6k;bI-T1%]B@ft>uQeu;m+I.\e/diP86nh
S_QdZeA<Y?#B,A,]X>UPR"ntRSs/IdfB)%Jjf1IfBXI.soEJOoG@/I9Lkn7kg7m+_r3<i:ih1YiSLjHA
<F&feI;MCuOQgP@>[MR=qV&c_YH>sX6@E]J>6oXo2/6%=f2crGUQ();nCH2lkI8smT&-hapKj&YjZKu;
gCo[[K0(I-^@en)kj.9mmGt]Re(5SM^?4)@ZP@hT^uOWok3G/+g)?cslYC:_\jUs`:&7UE[VLWJWi85M
N;S8F`:^MQ=s<dWPC#$_,AbMEl"b'5#G]#A`)3\@XVH"$X+q_skEqa2SAXp"Y:\OljHNmoG5Vdsm7Uej
h0nRcYH:Rq6@E]"p;6L1[9SW_^324'[C*MKk=f4@\Zf5Nk_f^pD99[bI;M]fB;<FiJ'c*h6@ZuNlQ.Wb
It_ZYgcTK?Ks1098$&j+LYE[=`ULAN8m:?V`-7'UUX$BD+)K`;#<A#alQ4i@qT?E]BB-S9-hi-rMmd^d
?d\W-ISm)&rW[e]W-q1Hb;BIQ]"")-MZRle5M4O_s,q/uQ(+qAG;&Bd\1[5=8]rtq?HcO!Gq^mL#JIA<
EmX@ijUTlH:hrl=/\:2)Gir&]X#:QrSdOY+UE6o*[An1)YLM>kA1&(S,5idd(9a6heD]7HMnVp7,EuS/
19A1(`VcUt[P*Q`jZticHM$(!o82"E>Bh/iC_C(,:/rQ%3[L8cTdkC0@YE!97#h3iRe:Sf<6O:o#r.3o
(1Wobb$DI0>e"B[D010ZLr3*)_`emnj1s+uKi1mVCF))[F-T!1,q/d@5-rGH(t\,cE3]C5LB*qcg=P[p
3I0D6`Id9kBHGA>6gL1H(8n6Y:o%^+8bu?9qC#Eb,-9=TjG[d"6&a2TfQbENjOpf.3HCPlW&80'=qn:N
mCd,`ifs^LC.[qA0CUs_3gEh5Tcgl?VXH1/E8('QZGRp]m)l#[mcEWGI/`3G*IuJ=X9]Q<QK4gSF;!u4
>p[&5h:bja[1@;XTmLqh#@HT>`EtT:f>3a8Yi_?ZH+EW.r@F@K>N^u)l--:m08g,)i*#rQ%_(S)S$Q.#
T3]=3NKmAB+8F'6HQ7:9VQb4LT'q:d+Lp+$pj/"UAnWLKD,[9V<$Z?SB\+:*VbPl&C1VW8-;pfNfm"='
Ma4KD<f++eo4+h:UA"D6>LkeGa1Rt?->MGJA6!ht(g8J[f!bkF(ah!ed,Oj0m&t@0;Q"[nG>PluL&3A>
__N'Wdrg\I:qCs&UGs4*ItfHEl82=k7CP.G'r"L62*^JoLe;h/ZZ"4gE/W%3IrP7[1F`M'1[\ZXUcViD
8Y+B/.Rt801I3>Ul_50%R<OkhHT`eS.C?l"k@:Tpme]n_FiGI<HuSm\6()gm'j$OrmN]]&Le`Y$-.&NA
1H3@^\7I+#jZRubc>M,:^g,bU[PO@@4ppY+5Y%B'n8j5fO.rfH/84*-DS1fEH(WUN&\</#Q7,bBjFH9a
q,sTl+GNALXK,CJ/Jh$o/<?iRQS@H75Pu1hZ=68DNK_c?-2i);jk$-\bL`%MSP7h*l'U*!2JM#q&u3^U
A`K)q2E<F9_$hE*e:+cm01L:(ggJdGmptf4g=EchiG5a$Ejm87C+W2_+>kt37UN%^W8SN2QH8a3Y-r5n
;EiN.\&XkE"gEpa-ER`Hf)TttR-fW=526D-hiq3Pi+>L"YVr4$H7A74;nBJ5IT>0Jb=<JUQ;4eHF1&Af
UmeAaR3"$I?'k4:s$4o0q:d35Xh)5!)G3e(C?Nl4?hQ!NLA)gNIVPDn<OHLdA-(HNUWhRS#I(+]5KZm\
__8N>eNHlN5(+NslQMa@M7`jm>YoPN<HI%6S/I'eFI@/q?YIhEg@TekZgS@mAZ"m"3G/e6Y%6N0C#)@:
]@^$#6,Mh_@,/]IRWJm-(">T4+Rf?+@"UDErpU[Y2C5k:OXfSN3iS+i]YkR84of$eS1UK?V`I7hs(0Q(
H/:o<^@9mI=5atG`O#,ng,5Sl--\^/s"E4G*N(WRWkIu]"f'&MUq1QYpt>mcf@oAupOR`uD`tkpNIVar
9.]MoNQ/ZCGCO/<`&[H!>h#9>C(&dYXriuGjS+ENHB:JBrLheai&]B"-iM]"fJ;Uh`+RDIMn[Z$fQ1<-
nCl^?h8&0l\sn$Ib0_g`&9\PpQs@616Rr^d?SDAR:A.Xo:>..l>g7'7b-QHOU-R)a08p9HQUd#OetQ<)
]`DjW906;k<dD&2Fs--U>BahRk=bX:UYJUN/:N_d.(IH]2gp2?*U@$mAfI*Rg\'r382n#eIPb867m((`
`F[WZ*O:TRpLX61CP(/!WGueW=.XVVTep!0<dsgSKT5qa?*auFGRsOjrN6pNrAui?g^RRpZY_a18Bk2=
3eq<_XTUjUZdlJ(dTrt>3V6Rj8'pEjPsg7:Mp(&1d;3g]qf^4"f6heoC^m4i1g=8]*1AH3<6hZ">-2AJ
mV6T2JOoBPV(uA/ROp.7?:V?@Xl@;W>MM`_>dFkbc1]$$Cf/c&bn`7gYL#?8/iYss$#dA8<1P,\/)c?=
[PV4O5&.OBRCptoOYkfO+7g!6bkWU1p;2_hC%&:mK9#>4[M[9WRVgN!<pHh^Vcd<3e_BVVauEI;[SA:'
C]d>:7IK9+Xd;H3(%p(OfqK5YU_^F<%CJFG5lL9*)5PqTcZtf;M_;Yh4EK]IEd[4T7$Zf"J'.eJ00)4^
T:)Jp5IfqVq!b]Nh<iD*K3,V$@qoZt8SpZ2G008']3(lOo4hXD?dm3+<h<K;)HA@MLiWE$P>D1S?@WN8
.HTqjmTgjGCOY?+e2+WWG5D1-nuba$5CQX`Z2HcqbB5;>ejD_obaZ=qIs_^-JG7)cq%J$tHhY#kgnHE.
*2Tp4noIqsQ_0(&l=NV8E72C9PguuY[?\gY]^gFrO*.l=8QXoO-/4RBi2]F$p_1:,ked$k_d%Y2"?i+n
A^-W#AKdrK2'6d^2lsJ=G)V`2OGf@Wh'P")5C8S8aB&VXqgR$aao)`tk/'7kQj[\9egK>-0%k!KgTSHg
F2[A_>-]$-@O$9RcRqOJ2Ta7p>hbu`[?HGKC3A7!:;%>NTm0k\R3tOA5B/gUr?.0Q%Eo3o=5iQdNaP5'
Z>ccPZ7jk,j/YUj;+Kq",rAsQ=MsmfLt<*;Ghib&N?dEo#E\]hn[aHt6M05/X%Bn5a^F_>'h=QKD"pP<
Y2P263Wm6ieN%>Y=50n?OY_>)Uj-1?`JNLN3Z.CuTGs`:]aM.R/`MZ>2*>I).ku4+f/5C-icM+nIU]^X
'h?SbmS3>Alr6pKUue%$GqJbGCF7)>gigR.DD5:5ZH86gFWGhADW"2Ph&Zr:qUjN93q1+@K/nQjo7Jir
]0ukm\er8>=Z*!RfU\P*fN1\iKstD'<Ik(TSV_%.cEta=JVqbWhp`TdG=cU!'A3Q,X-%^cf=g\CDh[]k
!r%_6f6+7eG[59Z+r6SJ&]j8)T`l_?Y-4<Xg.j<YO^n.(HN$]fkku$!+RAd(_;Bg1DH`Girt2E9&=Y9M
`ddm1Dn+aZhse>;`gc4"[#Yi!i]NRHr1c3id*Oh2?H<\LSK@C;`@lVill0_'Eb+<g0:LpFqHnQB_ci,L
H`e1aE\)MX]XMi%ItZ"rpNjOunDBmgS6ruZGPI>l^=_lePeQ9el49jk=@plGXMrS+C?>.\hr=#8I8U"B
7=EY:e,SJ]c1U3ha%P2B;Z7nG>8EgjL&Zn^"O8[XHk4j(EVL@KUBII'nQ5MUs0o\9h^"URENQg_a<K5S
r&:7!qW/Z9oB4+A`l5\c&-^cPd9bWf)XXY;44<H/mouuH?LoJWLcZm=l2PDh(QG?erY(ptq(F6Df":qV
_II955LVfGrMI*snCMX-#QO*QSDaF7nPR/PnUIA7[JK'4e_eiRI$7rpqKmP3\";II/^j[[0!k-2B?,(@
aELk..,PCAY1)LCJ'hQ9^XN5)]6$-t7lp8;osU^YaHV0<T6kp5TldmKq>[7>^6E_3CQb%Ue_B!?ogpgm
`"qtpX*f<bVH9SnV=B^jM"/(=bPV;<W'BE3I%gA1qZ#i.f"Jt,ofKTtOYgCJRu+n*$i#@0jB$`&ro+^n
/,a\bs6FS]T[/,:ld$[Pq!7h!r]bl/&-)1c^]48IjraWs^OAh*PjNu"gE6IpTE!A)=4d>)^id.F+Bj8&
A[B,MQf%ese)GlUm=,6,AH&,~>
endstream
endobj
7 0 obj
18251
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 523.00 366.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000019002 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000018978 00000 n
0000019456 00000 n
0000019172 00000 n
0000019211 00000 n
0000019313 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
19529
%%EOF
@@ -0,0 +1,293 @@
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Title ()
/Author ()
/Subject ()
/Keywords ()
/Creator (yExport 1.4.0.1)
/Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.4.0.1)
/CreationDate (D:20161122155121+01'00')
/ModDate (D:20161122155121+01'00')
/Trapped /False
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/ViewerPreferences 4 0 R
/OpenAction [5 0 R /Fit]
>>
endobj
4 0 obj
<<
/FitWindow true
/CenterWindow false
>>
endobj
5 0 obj
<<
/Parent 3 0 R
/Type /Page
/Contents 6 0 R
>>
endobj
6 0 obj
<<
/Length 7 0 R
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
GauHqac7Z-EpZ'),(Dj$cGNO1!=sF5Q53X3!PGSS%7.o3"-;Ub1Qm2C;,n&^Pafa8l-@+Y'59p^r!_oK
O7;r9&+K[!/aGVc^:li2lf7g!pI?:hoAGsFHfaqjXQ&pCgW.'Wr5Yi#+91TuT>1>Or:/D=H)oBmr:aQJ
rVOA-o1/`/n%\d?p%U3?Mf$/Vk'cUb[!AR?B_1tmnDDaghg>,?EiktpMHl,O/rIZhZZ/q9QbP22>%Lad
pIER._CrrT9I#^lJ&hH^h`h%ss4RVUh&_"Tibt`Eq!ijb/#=ljJ&r73r(*f7[KqWPj)Z!VYCjl.lbr13
bb&kpT08=Qnn0".itO[u^[$6el#Tm8;"j&m>CV*+^Qd'3praA0D]ILBT[Xb"T/@6]X1eH+ij0jCB09B_
'2\UsM5WA-eInHjT4nqA5<q";`Ni=\6\b*s\1lR;,bhTk>Vf:2k5)EU?+=U%D=q>?M9>1'R7&cM/=#l0
US]nm"k7MH53$%q"&CSIT1!Z1ot`i:cWW>-V>idkHQX5(rQgK\f%Nm`U-q+^Y/VRV((AAjFm:o`^@sS=
ZY-EtHO[13Lq[f_$`TXq>8fn@'")Jfj:$0m$tG*]-maj$3RWl)E(\_Y`d)XQU8m'^PR?",jQsjc*lWak
!^1=dp"GlQ;nD:#/0Cr(`HYO6@#r`Kc\I./n>qVh8o:BtVU6Q^J&[o-CB(Of\9_,(4R)_HMU)K(^sd'K
^55c3-J('m"<_[5)YA+SraRgt["tL.pbG]I0*Xr)fJUQO6<8Se,Ne^=k>QcGSR[]1E9iZ2odlpk@11=a
rmiK,5,IX&(SOT'ok)A?m%FZ/Z@jb]-$O_igb3Pj*GcrL@EE?c)8"2cqVJL/LDGZbDE@.$98\7?FWC\9
o$Lm]1V!uG@>a@"@6gS/*EHX2p8&6L0l!j_-(l:h%80A2/hr8Ve6sX=r4$kdE:9sI8urpQFVmp^7u%\s
UVf!e%RWrH\2F@3&"'Lc03W?i`#_\*;XAlo3XfM8FdI[m@DB?L]^&i[XEh;?e8J*1mr,FCcWkJ`U1mf[
@2J@)eY7>2*<oK`d:'h\+n>]SOLEa"LuQfj(iPqB1k!r(hHY6/*$#5U`TT>kLb_^G[ZTgY$aX/dP<*O3
CH?:@8kl[>6nPf,aE6&UNKr3gm7j@.l**l.lEEuKlEDXa^IW@.DjQfC0k1TRCEtP@eU#?\_T1f*fJRio
b<io"nhMoc/MAGb-5#iXo?2/_%PA<W]]B<KdOofrTZeu@:o@mJ9?Id7:Rj(`E@cB<<?.J=FPD38in/YN
nCW-^^YJB81p^6:?(*0UrF,:`_buP[[b[^%ONYgWXs>Z4q6mqP9R.NH_G"9:YJMkEj0JIt6S(_OVDP'k
b8P<SncO!@3,*BcHr0+\I%]-#]JsqW3LKKZbNA8>?!b0DEBSWT-"M)DQBumMr&mrA(Sem6(Sd/8Mc%j^
jea]m-*KMPMrKc96eV=;fj#reRtp.fr;hV^\RbYq2\3$Wo$POZqCXk?Qk1[h`s`riiRO23ak$[tq%Iq$
!7/^]`6%r@@(;]E@=Gh8(R2o_MmR&<9&cpoCAa2=`:udq8<*dpKZBMdVd.4l)\pgR%m#p+d?;"h/W7>]
]Sn'2236=@"4;#C)-SsM%`g11d_'6R*Ik=42<Qrqk.`;A\1+$n["n5<:N9!)nlHQs22CQJZ^o:#7PAL<
V)Fbh/U*9KMlZ)q`?gkDCN9/TC%f>c@a`udE;'+_Qu6@#&[jkN\u3(TPr7fnRc9$.$YR1!>c!=ZVN$bR
>H`Lg2I8#QC=$]fbNQ8ZGt^QJG>pd8UX/;'@3;1XHB&fkq:FMt:+6W-*(Mgn=#..AiAG6oJ^*4Y:+qn6
%[b-AB.26].oZjpKf!([]KP.[OWO;):JNN!:N6M.aZ"!OfeM@AC*<3[%J>$oSi,"+dBtl5%<[O(h59/f
]oNgj!cY>%DK'&lXDd?IN[Yl9rU8D)s*]>I/TVl-:[t4?[1Is2W\d4cEl(+*PR0YD-`j/2k/WteXr#D&
%X>tMCl`n3f5%KlBm[MGT(W(3IS/_D:PLemV=N]F$^72\Ie(sAa4p4HV[#EQ?i6/2PFi8%IS0FX:V.VE
<&FmCV]r>DZtVM9FGdi;\!4E8!hAIqAhN%n(AFXf+K[ou">d1:(S@7X(d?7)XJ!:eI\WcCgN]\-^'V^e
,M(V*HE_]]\'--]&GDJH3ILRfkY(JDn'WHa0=P]R#kb44g'c'oG,d[>L%se"K0$]-Kab_6SACE[8lj3@
Ig]ZgM*=U[(ULRF@$(["<bS1<1seup=l+QFc84[(#t3]gN3t_[>t-iNRHq3'7=W/AFAaWr\dN"b])!*Z
9=sE90%A8`4_o:AQGNl5ZO3mS+kYPnFh40`aqaiJ3QJ^>Tr'ijb$]4!W\uetLW+%3]OnhPNrKl#KXPc(
Pfg+dCm3^tL<!;!(O9_D]UA57[k:;KejZh#=2!jtMnHD[hJCMas-t^1mAZ"sO"Qm]WJ_7P0#@hUXc!Z1
DpM&mh>"@,l_7OS\k)V[U7%UaaNK&HDr[1CFc'uSp)A[]CTnQiVUQEVonPT%''4N*RS!*?D:7)1a>Ylf
ZnZ.7hHZ&LX_S\eY/@8Y):CC5aE:4!A@cC.V-0YaOJ-HelE-CXUK'lK2!<q'pHfc;FN\Y$3gb'k#SOUC
'uJ6O2S#mSR_a9HL(<j`(S^m:>`hd!,@#X(U1&-R0jS:#>M$*?_0&IL.<SAaS<M%6.U=i%!brCr&8OL#
$/ILF,<Uj*NFj'"5BKU6#In)lX]ft:Y!IOF(mR8L7*4U3(1lGK*QGW=>cUmo33Z7amlj]!>G*.R*>`Hs
Y@4aTKqA<29t_pHEG;C9O:GM*OFi+@1Lp&'&hd+rLX01"qoq!rp1B7Aa4QG=X-G^O<WP?u#;oJR3Q?A:
piU*?32gF]q<gVZG$mI5Eu'7%1--anb6$)Cp(P(q8N4^O_G9@?0O5_gdkNh'8XcO%)l7#i'&21eBskfX
R-P9WYG5H\?Z5f'ce9'.Vq[g(O=kmC_n>WUTl!T<1dBj@GJ2%g+CK<X8\aRcgCH2h@\rJ^Ap`,+qt?h/
q'8*RAm*^e!.%$-F`>t3HsHp.V0L%_CO[DuJU`0d;_^nJmiAUN+(LPI5OURYbd+B?&S,\U648%sj_4]\
DtaAHX(r"WXEJOl0NRY5.LcZq*c"J(dmAn<(HlI3&fBr^KpUVqCEWhOZVW1\(%.(giRrNc+RF5'<.M?2
]%Wr\WJF;`KFN@noZgKeb9XsM7*jT%X;6Z1;Ajg*)cou>"PN&K;kY4FptiCP":S(Pc.#XAkS*#gTb5iT
lj1q[&pe9O]%u8.2*:I8HIgqffKEsS)=K`O9!bF\Jk#B\j'LAY=)DX__1!rbWqDN2e=^<&TM%<JGh&O`
6?oqH6#i18ESdehr_[U?frN]hA1;=hVbPelC]EtBXOl<&+T8H%Bb+sf)T?(7,;S*;TW%h44W5iYO[eM-
dNN?)E`4DQ"uc]A)Lp0OdU/?0K<8KV1M0dfFQLB,^W?X#d3)'1d:s!56oh)@*(Bn&,%@]]0P7l#CPFP\
ZhOh3m6Tb-*oCr"Ql34uCU!)pS%q9PD$biaE6I.'>re``rr=YI9R4]B-t`:N#C1>bEG8@qZA![GbNiOX
aYHufOl,][GuifapA05B2&;2-FP);6'EO3Y3in#b=Z%3(N0T]N(skgV_cga/\TJns%.,Pcej@tnP=c:h
\8Z-6_RsiGndqY8J6FroX@7C7dU>Bm\INBja`8EQ//%,,Ch)`aTFtM!TH3TRko/J^>SFAte$TneT8jE!
k[H]ONGD4;ZSMNnlWlL2h5XDg3q^2$J^<1oV:dY!CHCh!]s-T1?&,+TnBkNs!HX":$UB,UX_,sXf3uHs
H[4l:*k&gD)4,Of#2Gs=0HeLt]=sElYR=[K/\2GHopQBFX[_iIonZddF-,Xj4W5iYOkQ9o#Ld+N9%7:=
K%+4)qEftFB_(Q]E\M)VC(4YC'"*A!jX''4job:^ji(]i>@&'d@EV;#8Mc3:&"DHc^G+$Y7p`ROJ)k/r
ro3K(?)pk0k/6=?Mo6W]0l6D90:S#GDOV/aCd.];Cd.`'/pUTp$iQ;*QR9G7+#Y2TT(TIZG)t?C/h`9r
U:`n#HnI&W6XGlSOLMkj71co?+N%XBI%XNK6s+PQbKIaShPE`#P89M0#<k$f#cf&2(Ip)2#IE99g&,-Z
bDWhZY"+P]KPV-=H&;4"q0Sq2VU<6A`Mk,.E=,<E*qZ;AUs9_;VRU.+:pN9#2D+X3k8LVAmJXFloqo5E
C!U_h&/(:h7S[*eOq*8V,ru5qN*/1_5r$NJ!`sm?f_pA5EW-o$o:lD-AurC]UQdp@>8i^Vhcj,9MK2<(
rTlfp<.7rYSJ"gjGT#(,3B"TK2Vmqs1O0umM>J0s]^QP&TQ7DGU&Z4j5q#_/F(UH+9(T@Mj"FH.Hl8j3
r:^KZgQYKk=`.IZZfKT+G]pf*\#7Gn/jC8&%.0;5BXh`&NqJHBQF/TYe"YF@L3Lj^@mq:T\!9)`\YcB5
1!:X8KjP3Dc>L.iGh'0``=<>]5@,:1m]]efWA9QNm20$@U\\C9I:b,AqZp3NF1d"0%W<XV@[8Ul8'J7^
Qu^.s>AfK=,bDb\QEA(qbd*N)I(lCHbjsFN3I0/"a"1*J*OBS7=h\@2cf\F5p7ndXALm]kZZPOgb?!mQ
B">1c/5b:FZh4+OnXk_B[Q5Kb9?2oP[[O@d-)c%./6f8Ybd+(cS*@'l&i?f5UVGJ'om4j1>IDoUGdBU"
r?HcKZjF9'57Leugmk"tYN0]u.J+Qp0/3^()enJfbObP(Cpnubp;Kg[X4UYf5K2tk/MQa^S=f64=[NW:
_f1'&<pOJKE*(6rr.Vh\>SOLIAmDN)dl6WmU&GI7"bJ+hZXO$PV%LVc.7;M#KUCkT(pgmEdPlQ[1)FR1
-"Z4\J!P27o_hgOYfDtG.G4U,3!+&tVmIoL`Z-(nWXPQ'r\h`*'>9rj(k#'VVBNr1W=(V5h)L<?Rqd]V
>DR:>W0elAP-Yo8/-1>;b1u+[ROZLm:W%G^BI`:9cDQ"t89Du8PU[V!1QDIRGn5d82N(la@;,>-#/tWE
><>H7=^H?`#=.d01GcjD0C18M5]iEOm2!tB</q]]$N1p$\2%ZQd81mq@[*?@hspJ_\k!]R\[X7)/kNW&
E]7<uj]5oqb<3?AT"C8ba.)=r(V7[CiMu2f]GVga7^(EI[F4nrZTd^R;mpP`/BtWj(o#]l*Fgq\G2`7Q
=dj3>E-XW#g\/G/R&/K9*O@TW[UYJ4gNLg3q7LNJHc.J7>HX>>jaP6$W?HH/''P?Y!hYi+H%3jc04]BC
?89Y%-=`@CpPN+ZeK(u<%6(c!\RUr4`T&R60h^f*.qZo.n!GEodZ.I:aMq7&1!>R@B)nKi-+1i0ZNNHH
9@S>uQ9]Z<Eq_#=LAd!4Ec/%I-0`oTl+CJke-T4#P&e3FQH^Y[N*3S&T.R44:<X@7`%6K-QmFW;N`i+,
'=251Y*^O4Zt#DHo>E35^FNp,qnT^Do10[-Q5`uNEau9!f\[^UUlN,tQIN`4Ak<?t.-7>0`@T+al'/V,
Ar/O]A!Z2+*OCDET:"_0(:-D'GKfWpk](<<b]<HOHTV1`=d%N`b]:mY`@P_]i[GmLb`[/-MHNguGKd@<
%%]2s$Sc8(Z/u6IgbI!S5:gEWoo$d?TDI\GqR/ItC"OVjk%.^qdX9C^ZSW3C9@MqGFP"-Q>DkVtRhh9r
H?[T]>4p>?GdBU"rQ1Y\6G"1PYf1*d(OeBiXZEW"_Y\V?n$tLX]/T6V;-0?/bff'Z`ah+n0Z/dJ@Lc"q
"fn1!XtEC8PaD?FIB&i)Hgk4Y/T/+jT4$aghsE3(Jjn1h@2ZqV3,lo=Jml=.-tZfb:%TKsk7u[nfIaKh
^,KB<I45)YG_GE2bY5e'H2\g?]C3VlaoP\[)FeQ5b[f`U(3r:$0KctE-s\,KMN]Y-Ce/Qo;,4)#3TdDD
(ubR2*kTBWdnC'K4I5S8'i48_7>37MH=qGtG*XW3V%l0$:sTC:Gb%8@k=l=2+9%3X/a`?m]]]/H2i;l8
"#;C!nG?U3@A[ZJ*.&(mr#77^iHX9L.A/5@>:'QQA>7pCb,Asn<2=FD/_:3o`oosU4rcLFV:D/;gs=jd
p+.pS.Q)r3.9c-Ug)2@\eu.^;1GJ>@0@e`TTE$eo)d2mOnY&-*0Rh#gp?_U!CjS%c\^>59nu-keg#Ba:
mX'Yua`=$=Ue##IitTB_4K&Xf,Xt.p.@*Uh_a/Bo'cV"V<,]u+6D+@IS!:J**!.7@_%s,>Za,%2B''qC
<=ad5ASs7=5me`tbk,#1J7n\>+ZqiVH7YVM^^c*:Jb`,U;]au94qi``M<e1QYnB"&`[5Kf3137R3S8@^
qO>8`Z&_IU7%T#>HnMQhi,jc*8*1(*D+oE]12`N/`\Z<tALrY#0fU5D.sZ2%LN&19Fd-A?$5:lJH>s+`
h@nm:/g+4J*0'h-59FX\39KA$0B9:J.JHQ\fd4Z5H7("kjpMF\o/+]MRrftf`K>&tRF!tcZP".2d9e[,
\oF^0LZY\Df6A6;kDcF>h;jeOi]p&r6D9qkhrA-=7.EhA3\bC(g!;bqVqiRkNMmU_MANaA8pNlb.i7':
ob^!=(,%!m?/%\d=aa\EI`@`G)j[?Y>[9-qcQ2QTiR2+rdOcub-?Ul9YpNB@heYir,1/jjO4-hfg<N^g
>5F<EpiWg%,Vgb@-gY/qfCt<=^>Be!_:Z#ck:51?2bt8&dX6]%EHk4+*#4ltdOEtMCYIW(IDa]74Sjf;
U?).TBPr6NLe#c-%9'*NH>1iEFSb?\Ys7LmhbTrbkN3=P'A"ob1OLa[g9Y(r[;ts"3%<-03'2h&/@5L2
=,QBi--[rN4#?:[RnGF3J&sJ+3U)bTfiEGUb,Q1\h52UbbM:]kl6hR'cV:)A4Q]8Ba1NZ:dJ(I6Zfjn9
92gY(Cj^-Ob:_S*U/"o_mLbl,`-Ba2Wll[cbpLW(D9jqVEQD0<HarR\GJai/"F?B$f$3**k%VG6aEY-W
FQ5R(n^=Zuc9\=C31>:g2,\p&FN@CPSl85WDGsC/W=ShTY"MX%jMe@FbEVWl???tSa@d#G&KrfqW<k11
g,qOhP*t4qo!6X/>9\*RVK@+*-KS93j\8BSEg&t3H-q0gQPUY<R9O!<pT[7q1AAeL]Ju4ikYR/[MiIo\
H,5W3Z+1n\@CC++[,HMq-1_hu/rd$9q.>.b*-oXl4DjXue2M[+F(=c]c]rYoP:WKPMdsk%Ad$*7,r7RB
a@f:n[CAD5pI68;4sH>[2'_oH/b0;99u_78]]am.b=f"d*Kh4//h`520D;9bMq,H$`EG.%[iUr*3![",
ACJh)Wfd.IaaK06ZPDYh(T3qej[%cWgSK$6MVP%FRtkejEGcgao]#!VS;]Iu:j@0"\YS9oI;-a4T$lj!
\I+Htkn&>mCs:q_g0:HBHc+S[-umG)j/gdbnq2hNqDt7gSfDI/K6h&CUH&6=iDS/gMc++$l$$eG$@<DR
Mj$lGJ6">7Q=/#[3bs5X>eKZVE6p4F5rcu!YnX=!I?*DY3sT.%LNg+E3P8:L+07;6=(!Mp(Yq<_f\9_V
7ZUEX,tY0u`@Wr\-XJR)s6NW&NU>AbLRe:^]rihXe%,Le-9$+gYDk?%j'V]ZGO3YN7U<La].4=<9Q"4]
nFj9Vq0.40!*Y<OnB"bh`(?2QlpH\7m8;9>p>E!kCurQ9mD2l+Whp8Y$=qHmb#MrI)=9!J!L2`<Z.:1A
!>XhOI/D3k8Aa7=:#3XR#@l+RZ\KMdQBe&]h^uGnLDaC]ZIpgdO.=Bs]%.XiN6N.8*8Sntb7(#2R;REo
Gg#\g*]Pr]QS"'Ef?>Z=ke*UBLC5Ks[<N'=/V!@]l]8`Meu$ci]mmN3*[&LQ?JIGjHiELT7e")'6oIMr
S[08!J<NS;Vs3g(S"4oj7rKksCmT=JX-E>*Yi@,N0&JsOI+6Je[`YW?39s%W_oKb'C8NH-/PFlM=CubZ
U"(@3">?R?+3m7roY/G&k;j\pCW#].`Z\YJ1Z9:op]N=,&[_P+b,knlN[np[Lr5;^fVe$tAIA,[^:$qA
*:Th=>&>!*3XtgnOmCVSYF8(t;(kBd>@7,6S7NO_Kq2j>h-4*^#Us68j`A7jm$^"U0k)liO-U5R7&BLp
's9\]HSP5S%QU=i]#:SFd\2(Ldj;ME1L7S&i?h/>[s'+d4k@6"A?kdnZk\AYatO9O)r,HW[j@cuh1F\C
N?qF4q2ihkUc8+3H%2A>4MsE2,=.h2WdBjHEA#uUNSllb<N'X!PPWOTd;h1]2s&%HSoAf.^^SAm!<l[H
9q)l%4%4YN0RWUY,`Pdrc;j)7cY2-]>\nQ>UHPuW4WMp&Z1_MDoGnY@RD\ec].:Dk0fd+,]6f\lmBS=t
HPs7Ep:Zftf?#pH7FZY$>Ou:l5J5tC51#4)kI`sRL$%&+(dn8UI(T&49;cq;[.f1Ble1LJ*dWot&2_*Y
m\EL&H>\!%e=M01(Iq6^9P3]qIih>sYWhI!@'4Km8+Dd6fq)(7Nk=XC=]#b*aYV(d-i.;qZ(BC>OkQ;H
]b7AIQS<`dfmOS.a:S6,B/bR;0]e@,k(U-Jm?gOuB%!\_)9qAB+bG,/J"%[BNI#i9dMoGMN=NR,UQW$r
.EW^foHfi6Dn=eH3.9*f<ca^!OO]kBY6rd[iR%pEUWKPlgb)@(R^^hcrp*^lcK\7:=Nsu3;CJS+btjSS
S4-9b=\VD(2''kTcCu<t=j:)Lk#N/-]OP0jg"d0keXXe<h,\Slkr6)?#Kpj#2QOAbb1g[V.5#S?#s.0b
26j2&[p>NJkW;gdouap,Q?K`E7T3M]b%a\0f#_Z%dfZnE#K^`+U)dLJRKp`F)VrVP.P]scc,ieU>>:SK
Z^SI@o2s8j>fL20B@g7^?fl;L>M<^2I8bXf&B*,+RR!bCBJk-m^'h9Y!bAuO`,k!?F(;PF)q/O'p#oEi
aL!V&k(QNbh=;^0eM"Q)c.S(jgC`2t2lhcp:qWml*53W_`\h1/:$44>RZ?2rU?6a]Y,J(rk%s%)=j<p/
p2)Z-]@B$23j!Z9ZAEWRp*6Uu]0'q59lOW+UV1@BIF:K*hhN^=ic/"44\,db63A.tE'V0]jY.L^Nn@"&
C,5dUriGkspISCmU%K8*eIKth/$t:Q:=2g3^VI9EF0$*[f,6c91S><*$4UJ^_,k;8AZrp(g(W`J+t[gq
V7)/_5)8FN*3RX.T0?l=Y7L!.of3Q@gTK!c4*nWG^CbajgX"Lr_Ya-fm*YD4(S!hEHZi%H!ngm?UZ]Eq
c]6,qC3tGiaCC3U[U%:&+Q"Ot7/gf&B<+UBZ7uL8R9j$;gJJ1KC"k/NS$,!*Y4HoS4XX,he8gQ[/Y_\q
4n5C\HGmub[V5JXDNsF='>1OXN>pP3iJV=e0.B4U%fF]?r$RP8!D1T?*Ylo$.0e(%JUs\-NmPm7?]:G.
X&M0<$^FBgS\45>MJF$^\]1j6A*^(M4%^G\O6%8ig(/4/\WF!eS'#k=]`MV\Xnp`Ma^B+k'H$HDnlI7m
*ilEn1FBIeY#To0V-H9EdOTo#Ue'oeN_-'<KZlB]$aoeEcc"?8qCkKZaDPQs*-2]LQK0cJp46=#n#k(.
1c1bZrN>kSCUa53ad\0=F5gG5-`2(+m&g:UR]Cn&nl>sfU'PtP<]n)lRPN9_faF!,/BSC:Rk7mU%7>2<
/WYEaG6FS9c?ZQ.=0L\9=KPB'Ig^Hhks7c"Qu-09>J@-58RAD3k'@\i;;d$3W(*O2W7L0f"2Q@$=_DZ*
qN*9"n0'<2>+N@$PPon`O*q*VNLr3Ir3u`gSRGP?87_oGdH`@+=nLGC<]arFk;Rs5;7nq%;(CZF#^tsE
HJ>8U-U'JM7,u7#*e.^H$SX>'US7mN="4=*f^,E:ede(LA2.r\XAbP7WB>=k4X^P3INe&iQDUl"g<Fa@
qd5A\@&,uW;WXMFS%R:@oi@i]boV7%Vg_ZIbFY3Wm+F0rITem1+49i!gfF/C#Ap"%<-E8PU`=q64EQn&
8qSjj^d_9T'/o>2nh0%d4l6s*"\$,\B!7-=aTn%/FlVX:2Y,=TNha,7hW1tZf5'%c]@A%;c:d7Zn)J?u
OiCG*;B)UKBlr:->I-aJ7H[lQOB5=Bl)W:ug.Q>*:)>mMimg^eVC>G,nnolJ6M^27TgmKf4Fqs$\`2.D
"sR!/G:Adl&6>8t]7SSb9ob.nEhjfepP)oD>RtCOh7.1-7l*hS7]XV%CqI`:DU/:A3G8!=9=5"7]H2u8
`U9Ysb9^Rd3G$;skUK1\3(M]gA@Z.=2LM44GoOIo]m(L1:tiQ&R<n,Q)mu9n]T!lDb:-HB8)n.]:0IB*
LXOV+U(fD;K?grM[r,+m[#6<,imqFNUL=`13EB\n2#TbPlE"uqS'I<udE&oC3s_ReEYQTt*0DucbSS)f
bE:V_I::<(0eA/T8c2A\b>[+dUK-H6p/RgdmAt<]qHmlpO8cUN$If#9/+),/T4uukO#sAb.2@j.:`dR-
qHnLho9T#*jcr8oePK-rgW!JY^=]?PT=ClUEc6\W#^_b,SiNmTkH.^'*7&[VT?qgRpI65793M^Ll#?OU
Fc*6!Q+/UXAGJ%U;\nL(<+R?a>27+r#L"]]A6Q^(Z7Hn7*2&Z0a5$UR*#:Kp`*keL8np#Sfr9:hliGOK
QrLN?C+&Sk1YBmt"oZrDfm;2'j4B95E\f-Tg[m/)YY7,;h.E='ZVrW8"/ElclKRh%ShH.'&(bm[N$kND
krm&qZ7?:dR5.!8Im2&jI`L"%b+=+'c-?dbp>5:fhYR,0]fkI>4M3Plo%$FF]sZ:[hHFX&[oW@mXkDNR
>?]4[]sTV6Dlnbl[oVPVXjqN?CGe8g[@2#PXd7^GX6&TJeai@`*6VQeq=`B]Zgb4V2;R,XDRjj\coKK`
_90:$24PIDhHK/>Dp>R[bZf/Rb?I&L,B)s(=.6hmo[Y#*U?NYk>I6/WhHH>V[oVYYXndcXhpcUlCMWR/
[oVP<>H@;feo87\n^\\j\)pf$_;CKdk4Q<pk,ehP+a83Ic9Z=cb<q'^8G/k/_7__(;KTXd]X7um^FZ_.
<pA$4[E?s<#rZ%6.."@6J&dlY<c6o,[EBN@2Q#kQIF8DR/$JM9C=UFk<g=\&X3NWp"?!hKjN1Bg/IHp2
AaI!QWQq75S(da'ol`p8[5r]kcQ3s=Q77&4:4N,0>cIj6m9#j[(9;W?._!m[UT4!2:k-)%NQlVnX>Gn-
VKSt7]uh8`<]<J#URSuf_o8(tHok7(?tO*91C-SXnZ7h<mGrZ<d_NM(&h$=Xd?8(SJCg'u&nLt:<=*2V
(a=/C$Kbb;*;$=H3LhO7MXa_..`rWcdZ5s@IGV+Y[1GR6<+<@1MfU-#PfIe/AWY)Y.U"VMQbe4\=cQ-p
5?30u_,W=Nk/AfSAt"u'7`-jL%1f7GH#Cblp&7ab2fC+W8s9hYHV<co-jJ<tRn1hoXhKEdacK7Z*t0/A
"&47iZ/-nt,C)IKQBjjB[qU=)hM-?Kc+EYR=\\CQ^fbuLXVBYS$(;f;a7E3JenimXb8`Gj[aK6@8=e(+
ds9$3*U;cA9<!#@6qWqDoU%LNaqER>Wp+W'Qh&M3qg6REDR6sp1q@F8O=R(W))>$hp<jj:LA8=#bG9TT
U(Vn1$Q2/s?c<2p,r;#]WJ]-.nnplgg<44/O(npIQ^6EaAP&f%bHg;MEM^3=]=jV$-1eUXo=%nW,sE6A
bo]a[6&j<0f9++&^(5ChhmG-0':sARf:RQ1&>T'>bVR\=VtU(>L=Qrh>brsSN'be7K%`>/hS*esc]36B
P;n9Re7"s$hD+s)fXU1;9"`ot3KQ[7R!3qLcMLs$/t:(@E@r3EifAhQ2tX3@VFBgRQ(HWBl-I+ScGf*d
DNoQJ^#u][4o;t+Cq/F[>C-8h?T)0`)BTpd=;J77Xphe:G$9+Eg<Me"h%KH+hcEjig]!5fn6T[AXgF6%
rCuZdS9h5Z\#iZll["U#\ICb?''F2URX2YbCXHnRQFM!/^o_]3np]AKqe3'qJY`7A=b0k^;9<"t'P3>C
qL2QO<DPe+b+S%*%(cIUKY7V_R2;17hUg[%!fi6[q-&7JFk[d$7TJtk2$:o+dN/hn2,)I'AK)B9r>N@Z
kGs`PWdVom9O(]#Xc_DuEWeu)jYp9MSTJ^7)+3rN-Q:C7jRh6DCK5/<K\#=(&Lnh:r;,&jbCZHLn+au@
4V,[>[5F`JB0)'3-4K!Mg+L1nZ7V,O.)XO-1WT"@:!Uq(SZ5h^5sCo5Vt/Unc]^7mEIrLZT>QVN1%4dl
JN[tYmrWEjj5%d.65E/Q2e[`WVep\8"V\h*Y8jFZMo^J5ThN'gEgih'-Ms#Kn%l?Ei+WOH1$]3'm\N9d
,AKLeH776c7#()K0Mi9J]0/SA7AninO(p(aTQT!&(di(AIP$S*BnZiYoV$Xu+jlgk>,;U$;1_q)Anej0
TkUri?"73+9#EWEo[^@'FbfP;krj8F8\%d?K,N-^KOnB-n3%MPlE%#@<UuKY[QWZSg1i_LfUS?UDjt[Q
g4&Or38=.AIK.s)E]JkC1is\k:qfLO[_IOLZo.Fd0;&4'WO#ZQ[68f6Bp\*per:cuhNTLe#93u4:HL/3
*ECZi[cC5%.URLQ.7m_s0SPC&7e)&\,<F$/UPmEW<LTtt+&BKGdER\?f5tSP1ueC?I?u2afb5\\i]D?h
rFYqE@o=#Ind6cAMP%kPnbkRSZSm5+d<&%1QNs#P!s>PL<OX@P?;fco3P.+`YKG__GL0JG^H7S%GN2[[
r9gKLFkpE2A:O:N5=J3qF6.t_Nf3bVTX_Q;jj@>c^:G^toM$Sq:HA&!;EO.!mJ@mFmR1abEb+abG^Lea
,sPh.p&3.:*#s:5*4b1Q&(+tdfXCkq59FU9QB,Qp.VItp40DLVS>gUVUj:bo[99rc(^J\a%tDreH1Hm-
oI(T\'V"QN$SS.7G8-$76Ho)]/[H?-1Tm2/5WcW4H=i5PBt">S+f29icLfbY=f7\bp$LD+<lHjn,791"
qO<Is%!Tt'@GX:UP'J:B2RZQ+;.Wom>T`Pu"n,mMpM$.ubPD!F*2g/h%$*Q9Auo-A[o:O3eL8XOdMKTP
5C;V?)9L-KFmuG,\bV3D91ml4p%'Md@Q+Jt@=F-?Ni]T99$,Dg!X6]!psF([2@mM'9$dDE(P^1@r(7<A
oZ!H.AD"Da_9h2>*VihITWul\`t[P_<<cUR2gaoPC?bGo\Hb8cTrE9P;g)K`q:*GUKMPD:r&aW8J)_Jk
p9]"Dd4hq9<]3M-8c`VjAdIYKC`1.7paE_,!si8S;(@hSI?c/0;`Zd6HZOKKU?X<Wf4n<Bp>2QsC:@gb
j/]fk-MK3O')ngmP4cZ`)l]t+<F'Udr\d7b>8_Xa96_$hl<S<E03YEGK':U7^APEXd2`9G.Y>5d*Dms.
6Hd4,Qdr)q9jdAL/]q4)OeT3Ck9Z8VE*CYk%:3eY[rg#sM[P<Q'O]C.h7pmqlHd!2ZHWb9IToV*"LAN8
U72@T$`:MG"L?iMZt)?WA@bl2Fo'^cRd]Kl96C%P,=@CSV0W?1FJWk_gni\Jr(80UnkjW9!-GTu(pkoY
c.*%s-McM1MG@Z@D=IGY`U%j4=4hUH$4sq2<Tm[*'$]02g3dP%1M`Bmh7e,7F9@Nndt"<;:sB5FS_q,b
^&VE&m@]I9;QB%9p`63P>B?u9Qgj?>AQi*j_bL-YC>\5#m_^Ep`fJB4=n?AV@8ahrpt3@(a*o:F<aQ\%
W+Z^SnhL9pYn2oZZ`-(p[T2*Hfuu7(mpB0M[_lpX9f-KTfVXmEWbreM6Pdk8Sp8@m.a/'.45#bm7."]b
7655L94utXQA%%CbF0;-Eoc"0Ggb]s^9!h$V8k/;[Iq&g/V!Kl421?3%=\2)o_?6Oq\K6<UK5!\aRsD0
b"XMfA^YQTF]Bu;lZ%>Im4+\&]U@Rs=M<F,nQ,D[oosAor>U$:VnV/WkLQS<YNsqXIZ]%;:@StGe5cC(
>EAYpX>JcLTPCt+e8&$h<]:1pqXLAbk-0c$S<Il"SZ-6c6)f#4'E=;3Vq%T&ldQeOf@;IocDn89Zr#0%
C7BBJ'h$!HG4LsXiM)$;eht<4ic^=<Z1CsO0DHRZj0K8df,WK#]KQs4/=KP88QOA:8s0+lk"FO9;XJ"W
92\d`P*[X?anf7fcn3lJAQH]Q(/423i?Ja)4AZf^mW[C5eV<D@!9t'?)?r\gq'jiLUk(+!).,(6[SJ4*
fp[7ld]?0Rem;ON[d^8#;.S@o.0:KsF,KWYbDO)M"mRMj)U:'UjX<`o"\Oc1APj%(Zs'm*`RbQgfbd2P
dJGO**K#i9Z-fLS*&csX#S5-C.[*`]_u^gK0oca6KGR^a-1fBTK:?a0'#LutF7doC*feXTkuk-i0EU:?
bgIIh#9'U.);`>-h@%(V/drp=Kg"'`-0"0Y@2?98`iHuC/Y>,+]-^CA[cIf"[VK2l@P<b671RGK,TG:8
FR"l\8TIm]_3X/r=6!BhpZT;GDDG0C_gCF<e^DHBC_V:gK\Y.8bW7EbF^^L1><X;eh028s-cHs>Nf1=s
afXQU.,L6?oLK:,%d*Q:cQGW9b-pGRSFe*snkHj'XY,h/7MP,^8@pkP!Y0,IY$kG%VR9p1n2OLc]C6\T
_H"pBEKBh?Jsma)+4NrUFPFuYH5\ETZ(?HcLYfeXZh=)orO:f$mCOVCqXOL3o=)GBMC7bk-Mrefpf[To
g:-NJTD&4&32_3)MM8OsqQp,AT'^n#+5A)GR!?6`hfK8\`SE_,_&%ZsImq9C2@hnUo?nSfA)?h1ZBb$u
`';_"gNVDQr=SMgo9XI:mrs+;X.SM*pt<Bq:MO8'H#*F5+/jPb2a%*;o#Is&p%X#br8U#Trq!UKO$EX?
59JicO8\f[J,T8Zr:Agsf(4ZVNB:GgH)/bn@!`;lrO7jf=?ZZ,a8ZANFOq6~>
endstream
endobj
7 0 obj
14965
endobj
3 0 obj
<<
/Parent null
/Type /Pages
/MediaBox [0.0000 0.0000 382.00 254.00]
/Resources 8 0 R
/Kids [5 0 R]
/Count 1
>>
endobj
9 0 obj
[/PDF /Text /ImageC]
endobj
10 0 obj
<<
/S /Transparency
/CS /DeviceRGB
/I true
/K false
>>
endobj
11 0 obj
<<
/Alpha1
<<
/ca 1.0000
/CA 1.0000
/BM /Normal
/AIS false
>>
>>
endobj
8 0 obj
<<
/ProcSet 9 0 R
/ExtGState 11 0 R
>>
endobj
xref
0 12
0000000000 65535 f
0000000015 00000 n
0000000323 00000 n
0000015716 00000 n
0000000453 00000 n
0000000529 00000 n
0000000617 00000 n
0000015692 00000 n
0000016170 00000 n
0000015886 00000 n
0000015925 00000 n
0000016027 00000 n
trailer
<<
/Size 12
/Root 2 0 R
/Info 1 0 R
>>
startxref
16243
%%EOF
@@ -1,4 +1,4 @@
\section{Experiments}\label{sec:experiments} \section{Experiments}\label{sec:transformationexperiments}
We conducted all experiments on a multi-core system with four Intel Xeon E7-4870 10-core CPUs at \SI{2.40}{\giga\hertz} with \SI{128}{\giga\byte} of RAM. We used the GNU \texttt{gcc} compiler version 4.9.1 to compile the generated workflow programs with the \texttt{-O3} optimization flag. We conducted all experiments on a multi-core system with four Intel Xeon E7-4870 10-core CPUs at \SI{2.40}{\giga\hertz} with \SI{128}{\giga\byte} of RAM. We used the GNU \texttt{gcc} compiler version 4.9.1 to compile the generated workflow programs with the \texttt{-O3} optimization flag.
@@ -12,9 +12,9 @@ We used the HEFT~\cite{heft02} scheduling algorithm in all experiments unless ot
\begin{figure*}[t] \begin{figure*}[t]
\centering \centering
\subfloat[Original workflow.]{\includegraphics[height=4cm]{./figures/Raincloud-experiments1.pdf}\label{fig:raincloud-structure1}}\qquad \subfloat[Original workflow.]{\includegraphics[height=4cm]{./workflowtransformations/figures/Raincloud-experiments1.pdf}\label{fig:raincloud-structure1}}\qquad
\subfloat[After loop unswitching.]{\includegraphics[height=4cm]{./figures/Raincloud-experiments2.pdf}\label{fig:raincloud-structure2}}\qquad \subfloat[After loop unswitching.]{\includegraphics[height=4cm]{./workflowtransformations/figures/Raincloud-experiments2.pdf}\label{fig:raincloud-structure2}}\qquad
\subfloat[After loop unswitching and loop unrolling.]{\includegraphics[height=4cm]{./figures/Raincloud-experiments3.pdf}\label{fig:raincloud-structure3}} \subfloat[After loop unswitching and loop unrolling.]{\includegraphics[height=4cm]{./workflowtransformations/figures/Raincloud-experiments3.pdf}\label{fig:raincloud-structure3}}
\caption{RainCloud workflow.} \caption{RainCloud workflow.}
\label{fig:raincloud-structure} \label{fig:raincloud-structure}
\end{figure*} \end{figure*}
@@ -28,12 +28,12 @@ To enable loop unrolling, we exchanged \texttt{parallel foreach} with a \texttt{
\begin{figure*}[t] \begin{figure*}[t]
\centering \centering
\subfloat[Early evaluation enactment.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-EnactmentTimeEarly.pdf}\label{fig:raincloud-results-enactment-early}} \subfloat[Early evaluation enactment.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-EnactmentTimeEarly.pdf}\label{fig:raincloud-results-enactment-early}}
\subfloat[Late evaluation enactment.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-EnactmentTimeLate.pdf}\label{fig:raincloud-results-enactment-late}} \subfloat[Late evaluation enactment.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-EnactmentTimeLate.pdf}\label{fig:raincloud-results-enactment-late}}
\subfloat[WEP length.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-NodeCountLate.pdf}\label{fig:raincloud-results-nodecount}}\\ \subfloat[WEP length.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-NodeCountLate.pdf}\label{fig:raincloud-results-nodecount}}\\
\subfloat[Early evaluation WEP visitation.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-VisitationCountEarly.pdf}\label{fig:raincloud-results-visitations-early}} \subfloat[Early evaluation WEP visitation.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-VisitationCountEarly.pdf}\label{fig:raincloud-results-visitations-early}}
\subfloat[Late evaluation WEP visitation.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-VisitationCountLate.pdf}\label{fig:raincloud-results-visitations-late}} \subfloat[Late evaluation WEP visitation.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-VisitationCountLate.pdf}\label{fig:raincloud-results-visitations-late}}
\subfloat[Memory usage.]{\includegraphics[width=.33\textwidth]{./figures/raincloud-MemoryLate.pdf}\label{fig:raincloud-results-memory}} \subfloat[Memory usage.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/raincloud-MemoryLate.pdf}\label{fig:raincloud-results-memory}}
\caption{RainCloud workflow experimental results.} \caption{RainCloud workflow experimental results.}
\label{fig:raincloud-results-enactment} \label{fig:raincloud-results-enactment}
\end{figure*} \end{figure*}
@@ -48,9 +48,9 @@ Loop unrolling reduces loop iteration management overhead, which additionally im
\begin{figure*}[t] \begin{figure*}[t]
\centering \centering
\subfloat[Original workflow.]{\includegraphics[height=6.1cm]{./figures/meteoag01.pdf}\label{fig:meteoag-structure1}}\qquad \subfloat[Original workflow.]{\includegraphics[height=6.1cm]{./workflowtransformations/figures/meteoag01.pdf}\label{fig:meteoag-structure1}}\qquad
\subfloat[After loop unswitching.]{\includegraphics[height=6.1cm]{./figures/meteoag02.pdf}\label{fig:meteoag-structure2}}\qquad \subfloat[After loop unswitching.]{\includegraphics[height=6.1cm]{./workflowtransformations/figures/meteoag02.pdf}\label{fig:meteoag-structure2}}\qquad
\subfloat[After loop unswitching and loop unrolling.]{\includegraphics[height=6.1cm]{./figures/meteoag03.pdf}\label{fig:meteoag-structure3}} \subfloat[After loop unswitching and loop unrolling.]{\includegraphics[height=6.1cm]{./workflowtransformations/figures/meteoag03.pdf}\label{fig:meteoag-structure3}}
\caption{MeteoAG workflow.} \caption{MeteoAG workflow.}
\label{fig:meteoag-structure} \label{fig:meteoag-structure}
\end{figure*} \end{figure*}
@@ -59,9 +59,9 @@ Loop unrolling reduces loop iteration management overhead, which additionally im
\begin{figure*}[t] \begin{figure*}[t]
\centering \centering
\subfloat[Speedup.]{\includegraphics[width=.33\textwidth]{./figures/meteoag-speedup.pdf}\label{fig:meteoag-speedup}} \subfloat[Speedup.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/meteoag-speedup.pdf}\label{fig:meteoag-speedup}}
\subfloat[Early evaluation enactment.]{\includegraphics[width=.33\textwidth]{./figures/meteoag-enactment-early.pdf}\label{fig:meteoag-enactment-early}} \subfloat[Early evaluation enactment.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/meteoag-enactment-early.pdf}\label{fig:meteoag-enactment-early}}
\subfloat[Late evaluation enactment.]{\includegraphics[width=.33\textwidth]{./figures/meteoag-enactment-late.pdf}\label{fig:meteoag-enactment-late}} \subfloat[Late evaluation enactment.]{\includegraphics[width=.33\textwidth]{./workflowtransformations/figures/meteoag-enactment-late.pdf}\label{fig:meteoag-enactment-late}}
\caption{MeteoAG workflow experimental results.} \caption{MeteoAG workflow experimental results.}
\label{fig:meteoag-results} \label{fig:meteoag-results}
\end{figure*} \end{figure*}
@@ -81,8 +81,8 @@ Common activity elimination reduces the number of atomic activities in our examp
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\subfloat[Loop hoisting makespan.]{\includegraphics[width=.8\columnwidth]{./figures/loophoisting-Makespan.pdf}\label{fig:raincloud-results-loophoisting-makespan}}\\ \subfloat[Loop hoisting makespan.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/loophoisting-Makespan.pdf}\label{fig:raincloud-results-loophoisting-makespan}}\\
\subfloat[Common activity elimination makespan.]{\includegraphics[width=.8\columnwidth]{./figures/elimination-Makespan.pdf}\label{fig:raincloud-results-elimination-makespan}} \subfloat[Common activity elimination makespan.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/elimination-Makespan.pdf}\label{fig:raincloud-results-elimination-makespan}}
\caption{Loop hoisting and common activity elimination results.} \caption{Loop hoisting and common activity elimination results.}
\label{fig:raincloud-results-elimination-loophoisting} \label{fig:raincloud-results-elimination-loophoisting}
\end{figure} \end{figure}
@@ -98,16 +98,16 @@ in all scenarios where the number of inner loop iterations is not a multiple of
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\subfloat[Original workflow.]{\includegraphics[height=4.2cm]{./figures/Sparselu-experiments1.pdf}\label{fig:Sparselu-experiments1}}\qquad \subfloat[Original workflow.]{\includegraphics[height=4.2cm]{./workflowtransformations/figures/Sparselu-experiments1.pdf}\label{fig:Sparselu-experiments1}}\qquad
\subfloat[After loop fusion.]{\includegraphics[height=4.2cm]{./figures/Sparselu-experiments2.pdf}\label{fig:Sparselu-experiments2}} \subfloat[After loop fusion.]{\includegraphics[height=4.2cm]{./workflowtransformations/figures/Sparselu-experiments2.pdf}\label{fig:Sparselu-experiments2}}
\caption{Sparselu workflow.} \caption{Sparselu workflow.}
\label{fig:sparselu-structure} \label{fig:sparselu-structure}
\end{figure} \end{figure}
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\subfloat[Early evaluation mode.]{\includegraphics[width=.8\columnwidth]{./figures/Sparselu-Heft-Speedup-early.pdf}\label{fig:Sparselu-Heft-Speedup-early}}\\ \subfloat[Early evaluation mode.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/Sparselu-Heft-Speedup-early.pdf}\label{fig:Sparselu-Heft-Speedup-early}}\\
\subfloat[Late evaluation mode.]{\includegraphics[width=.8\columnwidth]{./figures/Sparselu-Heft-Speedup-late.pdf}\label{fig:Sparselu-Heft-Speedup-late}} \subfloat[Late evaluation mode.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/Sparselu-Heft-Speedup-late.pdf}\label{fig:Sparselu-Heft-Speedup-late}}
\caption{Speedup of Sparselu caused by scheduling improvements.} \caption{Speedup of Sparselu caused by scheduling improvements.}
\label{fig:Sparselu-Heft-Speedup} \label{fig:Sparselu-Heft-Speedup}
\end{figure} \end{figure}
@@ -118,8 +118,8 @@ in all scenarios where the number of inner loop iterations is not a multiple of
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\subfloat[Original workflow.]{\includegraphics[height=4.5cm]{./figures/blast-experiment01.pdf}\label{fig:blast-experiment01}}\hspace{2mm} \subfloat[Original workflow.]{\includegraphics[height=4.5cm]{./workflowtransformations/figures/blast-experiment01.pdf}\label{fig:blast-experiment01}}\hspace{2mm}
\subfloat[After reduction recognition.]{\includegraphics[height=4.5cm]{./figures/blast-experiment02.pdf}\label{fig:blast-experiment02}} \subfloat[After reduction recognition.]{\includegraphics[height=4.5cm]{./workflowtransformations/figures/blast-experiment02.pdf}\label{fig:blast-experiment02}}
\caption{Blast workflow.} \caption{Blast workflow.}
\label{fig:blast-structure} \label{fig:blast-structure}
\end{figure} \end{figure}
@@ -136,8 +136,8 @@ For software pipelining, we implemented the workflow from Figure~\ref{fig:transf
\begin{figure}[t] \begin{figure}[t]
\centering \centering
\subfloat[Reduction recognition makespan.]{\includegraphics[width=.8\columnwidth]{./figures/blast-reduction.pdf}\label{fig:results-reduction-makespan}}\\ \subfloat[Reduction recognition makespan.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/blast-reduction.pdf}\label{fig:results-reduction-makespan}}\\
\subfloat[Software pipelining makespan.]{\includegraphics[width=.8\columnwidth]{./figures/pipelining-Makespan.pdf}\label{fig:results-pipelining-makespan}} \subfloat[Software pipelining makespan.]{\includegraphics[width=.8\columnwidth]{./workflowtransformations/figures/pipelining-Makespan.pdf}\label{fig:results-pipelining-makespan}}
\caption{Software pipelining and reduction recognition results.} \caption{Software pipelining and reduction recognition results.}
\label{fig:results-pipelining-reduction} \label{fig:results-pipelining-reduction}
\end{figure} \end{figure}
@@ -36,12 +36,12 @@ We plan to investigate further workflow-specific transformations in future work.
\begin{figure*}[t] \begin{figure*}[t]
\centering \centering
\subfloat[Loop-invariant code hosting.]{\includegraphics[width=.3\textwidth]{./figures/transformation-loopInvariantHoisting.pdf}\label{fig:transformation-loopInvariantHoisting}} \subfloat[Loop-invariant code hosting.]{\includegraphics[width=.3\textwidth]{./workflowtransformations/figures/transformation-loopInvariantHoisting.pdf}\label{fig:transformation-loopInvariantHoisting}}
\subfloat[Common subexpression elimination.]{\includegraphics[width=.3\textwidth]{./figures/transformation-CommonSubexpressionElimination.pdf}\label{fig:transformation-CommonSubexpressionElimination}} \subfloat[Common subexpression elimination.]{\includegraphics[width=.3\textwidth]{./workflowtransformations/figures/transformation-CommonSubexpressionElimination.pdf}\label{fig:transformation-CommonSubexpressionElimination}}
\subfloat[If optimization.]{\includegraphics[width=.25\textwidth]{./figures/transformation-IfOptimization.pdf}\label{fig:transformation-IfOptimization}}\\ \subfloat[If optimization.]{\includegraphics[width=.25\textwidth]{./workflowtransformations/figures/transformation-IfOptimization.pdf}\label{fig:transformation-IfOptimization}}\\
\subfloat[Reduction recognition.]{\includegraphics[width=.3\textwidth]{./figures/transformation-ReductionRecognition.pdf}\label{fig:transformation-ReductionRecognition}} \subfloat[Reduction recognition.]{\includegraphics[width=.3\textwidth]{./workflowtransformations/figures/transformation-ReductionRecognition.pdf}\label{fig:transformation-ReductionRecognition}}
\subfloat[Code hoisting.]{\includegraphics[width=.3\textwidth]{./figures/transformation-CodeHoisting.pdf}\label{fig:transformation-CodeHoisting}} \subfloat[Code hoisting.]{\includegraphics[width=.3\textwidth]{./workflowtransformations/figures/transformation-CodeHoisting.pdf}\label{fig:transformation-CodeHoisting}}
\subfloat[Software pipelining.]{\includegraphics[width=.3\textwidth]{./figures/transformation-SoftwarePipelining.pdf}\label{fig:transformation-SoftwarePipelining}} \subfloat[Software pipelining.]{\includegraphics[width=.3\textwidth]{./workflowtransformations/figures/transformation-SoftwarePipelining.pdf}\label{fig:transformation-SoftwarePipelining}}
\caption{Example workflow transformations.} \caption{Example workflow transformations.}
\label{fig:example-transformations} \label{fig:example-transformations}
\end{figure*} \end{figure*}
@@ -51,20 +51,20 @@ We plan to investigate further workflow-specific transformations in future work.
This category represents transformations that eliminate redundant atomic activity invocations (the most expensive parts in the workflow enactment), This category represents transformations that eliminate redundant atomic activity invocations (the most expensive parts in the workflow enactment),
with a possible huge impact on performance. This category is similar to traditional transformations trying to reduce the number of executed instructions (replaced by activities here) such as loop-invariant code hoisting, common subexpression/activity elimination and constant propagation. with a possible huge impact on performance. This category is similar to traditional transformations trying to reduce the number of executed instructions (replaced by activities here) such as loop-invariant code hoisting, common subexpression/activity elimination and constant propagation.
\paragraph{Loop-invariant code hoisting} moves the loop-invariant code to be executed only once before the loop instead of every loop iteration. With workflow applications, this transformation moves atomic activities with loop-invariant input data outside of the loop, reducing the number of activity invocations. Figure~\ref{fig:transformation-loopInvariantHoisting} shows an example where the activity \texttt{A2} only has a loop-invariant data dependency on activity \texttt{A1} and can be moved out of the loop. Section~\ref{sec:experiments} features an example of loop-invariant code hoisting. \paragraph{Loop-invariant code hoisting} moves the loop-invariant code to be executed only once before the loop instead of every loop iteration. With workflow applications, this transformation moves atomic activities with loop-invariant input data outside of the loop, reducing the number of activity invocations. Figure~\ref{fig:transformation-loopInvariantHoisting} shows an example where the activity \texttt{A2} only has a loop-invariant data dependency on activity \texttt{A1} and can be moved out of the loop. Section~\ref{sec:transformationexperiments} features an example of loop-invariant code hoisting.
%\begin{figure}[t] %\begin{figure}[t]
% \centering % \centering
% \includegraphics[width=.5\columnwidth]{./figures/transformation-loopInvariantHoisting.pdf} % \includegraphics[width=.5\columnwidth]{./workflowtransformations/figures/transformation-loopInvariantHoisting.pdf}
% \caption{Loop-Invariant Code Hosting.} % \caption{Loop-Invariant Code Hosting.}
% \label{fig:transformation-loopInvariantHoisting} % \label{fig:transformation-loopInvariantHoisting}
%\end{figure} %\end{figure}
\paragraph{Common subexpression/activity elimination} searches for several instances of identical expressions evaluated to the same value, and replaces them with a variable holding the computed value. We use this transformation in workflow applications to eliminate several invocations of the same activity type with the same input values. In case of an execution path between two invocations, we eliminate the redundant second invocation and connect its involved ports to the output ports of the first invocation. In the example from Figure~\ref{fig:transformation-loopInvariantHoisting}, the activities \texttt{B1} and \texttt{B2} share the same activity type and the same input values, and \texttt{B2} is reachable from \texttt{B1}. In this case, we eliminate \texttt{B2} and connect the input ports of activity \texttt{D} with the output ports of \texttt{B1}. Section~\ref{sec:experiments} features an example of common activity elimination. \paragraph{Common subexpression/activity elimination} searches for several instances of identical expressions evaluated to the same value, and replaces them with a variable holding the computed value. We use this transformation in workflow applications to eliminate several invocations of the same activity type with the same input values. In case of an execution path between two invocations, we eliminate the redundant second invocation and connect its involved ports to the output ports of the first invocation. In the example from Figure~\ref{fig:transformation-loopInvariantHoisting}, the activities \texttt{B1} and \texttt{B2} share the same activity type and the same input values, and \texttt{B2} is reachable from \texttt{B1}. In this case, we eliminate \texttt{B2} and connect the input ports of activity \texttt{D} with the output ports of \texttt{B1}. Section~\ref{sec:transformationexperiments} features an example of common activity elimination.
%\begin{figure}[t] %\begin{figure}[t]
% \centering % \centering
% \includegraphics[width=.75\columnwidth]{./figures/transformation-CommonSubexpressionElimination.pdf} % \includegraphics[width=.75\columnwidth]{./workflowtransformations/figures/transformation-CommonSubexpressionElimination.pdf}
% \caption{Common subexpression elimination.} % \caption{Common subexpression elimination.}
% \label{fig:transformation-CommonSubexpressionElimination} % \label{fig:transformation-CommonSubexpressionElimination}
%\end{figure} %\end{figure}
@@ -81,11 +81,11 @@ There exists no equivalent category in traditional compiler transformations, as
\paragraph{Loop unswitching} moves a conditional activity out of a loop and duplicates the loop in each branch of the condition. This way, the condition is only evaluated once instead of every loop iteration thus simplifying the WEP. \paragraph{Loop unswitching} moves a conditional activity out of a loop and duplicates the loop in each branch of the condition. This way, the condition is only evaluated once instead of every loop iteration thus simplifying the WEP.
%Applying this transformation to a workflow produces a WEP that only contains a single set of nodes encompassing the loop, instead of a set of nodes within each loop iteration, thus reducing the number of nodes in the WEP. %Applying this transformation to a workflow produces a WEP that only contains a single set of nodes encompassing the loop, instead of a set of nodes within each loop iteration, thus reducing the number of nodes in the WEP.
Section~\ref{sec:experiments} features a loop unswitching example applied to a real-world workflow. The WEP of the original version of this workflow (see Figure~\ref{fig:raincloud-structure1}) features four, respectively three nodes per iteration, while loop unswitching (see Figure~\ref{fig:raincloud-structure2}) reduces it to two, respectively one node per iteration. Section~\ref{sec:transformationexperiments} features a loop unswitching example applied to a real-world workflow. The WEP of the original version of this workflow (see Figure~\ref{fig:raincloud-structure1}) features four, respectively three nodes per iteration, while loop unswitching (see Figure~\ref{fig:raincloud-structure2}) reduces it to two, respectively one node per iteration.
\paragraph{Loop unrolling} replicates the loop body several times, so that a single iteration of the modified loop does the same computation as several iterations of the original loop, reducing the number of iterations needed to get the same result. \paragraph{Loop unrolling} replicates the loop body several times, so that a single iteration of the modified loop does the same computation as several iterations of the original loop, reducing the number of iterations needed to get the same result.
%Applying this transformation to a workflow application allows us to reduce the number of loop iteration nodes in the WEP and the number of invocations of the associated callback function, which improves scalability. %Applying this transformation to a workflow application allows us to reduce the number of loop iteration nodes in the WEP and the number of invocations of the associated callback function, which improves scalability.
Section~\ref{sec:experiments} features an example of a loop unrolled ten times that reduces the number of loop iteration nodes nodes in the WEP and the number of loop iteration callback invocations by a factor of ten (see Figure~\ref{fig:raincloud-structure3}). Section~\ref{sec:transformationexperiments} features an example of a loop unrolled ten times that reduces the number of loop iteration nodes nodes in the WEP and the number of loop iteration callback invocations by a factor of ten (see Figure~\ref{fig:raincloud-structure3}).
\paragraph{If optimization} combines consecutive conditional activities with equivalent conditions into a single one, and flattens the nested conditional activities when the inner condition always evaluates to true and the outer condition is true, resulting in a simpler WEP. \paragraph{If optimization} combines consecutive conditional activities with equivalent conditions into a single one, and flattens the nested conditional activities when the inner condition always evaluates to true and the outer condition is true, resulting in a simpler WEP.
%When applied to a workflow application, the WEP of the modified workflow contains fewer conditional nodes and, therefore, features less overhead when traversing the WEP and evaluating the nodes. %When applied to a workflow application, the WEP of the modified workflow contains fewer conditional nodes and, therefore, features less overhead when traversing the WEP and evaluating the nodes.
@@ -93,7 +93,7 @@ Figure~\ref{fig:transformation-IfOptimization} shows an example of two consecuti
%\begin{figure}[ht] %\begin{figure}[ht]
% \centering % \centering
% \includegraphics[width=4cm,keepaspectratio=true]{./figures/transformation-IfOptimization.pdf} % \includegraphics[width=4cm,keepaspectratio=true]{./workflowtransformations/figures/transformation-IfOptimization.pdf}
% \caption{If Optimization.} % \caption{If Optimization.}
% \label{fig:transformation-IfOptimization} % \label{fig:transformation-IfOptimization}
%\end{figure} %\end{figure}
@@ -107,12 +107,12 @@ Examples of transformations that do not modify data access patterns and can be a
\paragraph{Reduction recognition} recognizes array operations (usually the output of a loop) reduced to a single value. Associative reduction operations can be parallelized by splitting the loop and spawning several parallel reduction operations, each reducing a part of the array, followed by a final reduction operation that reduces the partial results. \paragraph{Reduction recognition} recognizes array operations (usually the output of a loop) reduced to a single value. Associative reduction operations can be parallelized by splitting the loop and spawning several parallel reduction operations, each reducing a part of the array, followed by a final reduction operation that reduces the partial results.
To be able to recognize activities suitable for parallel reduction, we tag them with an \texttt{associative} tag. To be able to recognize activities suitable for parallel reduction, we tag them with an \texttt{associative} tag.
Figure~\ref{fig:transformation-ReductionRecognition} shows an example of a parallel loop producing an array reduced by the activity \texttt{R}. Reduction recognition splits the original loop in several loops that are executed and reduced in parallel by the activities \texttt{Rp}, followed by a final reduction \texttt{Rf}. Section~\ref{sec:experiments} features an example of reduction recognition. Figure~\ref{fig:transformation-ReductionRecognition} shows an example of a parallel loop producing an array reduced by the activity \texttt{R}. Reduction recognition splits the original loop in several loops that are executed and reduced in parallel by the activities \texttt{Rp}, followed by a final reduction \texttt{Rf}. Section~\ref{sec:transformationexperiments} features an example of reduction recognition.
%This allows us to improve parallel performance because instead of a single activity~\texttt{R} we have several parallel activities~\texttt{Rp} executing at the same time. %This allows us to improve parallel performance because instead of a single activity~\texttt{R} we have several parallel activities~\texttt{Rp} executing at the same time.
%\begin{figure}[ht] %\begin{figure}[ht]
% \centering % \centering
% \includegraphics[width=4cm,keepaspectratio=true]{./figures/transformation-ReductionRecognition.pdf} % \includegraphics[width=4cm,keepaspectratio=true]{./workflowtransformations/figures/transformation-ReductionRecognition.pdf}
% \caption{Reduction Recognition.} % \caption{Reduction Recognition.}
% \label{fig:transformation-ReductionRecognition} % \label{fig:transformation-ReductionRecognition}
%\end{figure} %\end{figure}
@@ -126,7 +126,7 @@ Figure~\ref{fig:transformation-CodeHoisting} shows an example workflow containin
%\begin{figure}[ht] %\begin{figure}[ht]
% \centering % \centering
% \includegraphics[width=4cm,keepaspectratio=true]{./figures/transformation-CodeHoisting.pdf} % \includegraphics[width=4cm,keepaspectratio=true]{./workflowtransformations/figures/transformation-CodeHoisting.pdf}
% \caption{Code Hoisting.} % \caption{Code Hoisting.}
% \label{fig:transformation-CodeHoisting} % \label{fig:transformation-CodeHoisting}
%\end{figure} %\end{figure}
@@ -134,11 +134,11 @@ Figure~\ref{fig:transformation-CodeHoisting} shows an example workflow containin
\paragraph{Software pipelining} parallelizes a sequential loop containing a linear sequence of operations by overlapping the individual loop iterations. This transformation can also be applied to a workflow to improve its parallel throughput. \paragraph{Software pipelining} parallelizes a sequential loop containing a linear sequence of operations by overlapping the individual loop iterations. This transformation can also be applied to a workflow to improve its parallel throughput.
Figure~\ref{fig:transformation-SoftwarePipelining} shows a workflow consisting of a sequential loop with three activities \texttt{A}, \texttt{B} and \texttt{C} in a pipeline. The index \texttt{i} in the parenthesis refers to the loop iteration. The output of activity \texttt{A(i)} is input into the activity \texttt{A(i+1)} via a loop port, which hinders the use a \texttt{parallel for} loop. Software pipelining executes the activities \texttt{A(i+2)}, \texttt{B(i+1)} and \texttt{C(i)} in parallel, which improves parallelism and reduces the execution time Figure~\ref{fig:transformation-SoftwarePipelining} shows a workflow consisting of a sequential loop with three activities \texttt{A}, \texttt{B} and \texttt{C} in a pipeline. The index \texttt{i} in the parenthesis refers to the loop iteration. The output of activity \texttt{A(i)} is input into the activity \texttt{A(i+1)} via a loop port, which hinders the use a \texttt{parallel for} loop. Software pipelining executes the activities \texttt{A(i+2)}, \texttt{B(i+1)} and \texttt{C(i)} in parallel, which improves parallelism and reduces the execution time
(see Section~\ref{sec:experiments}).% features an example of software pipelining. (see Section~\ref{sec:transformationexperiments}).% features an example of software pipelining.
%\begin{figure}[ht] %\begin{figure}[ht]
% \centering % \centering
% \includegraphics[width=6cm,keepaspectratio=true]{./figures/transformation-SoftwarePipelining.pdf} % \includegraphics[width=6cm,keepaspectratio=true]{./workflowtransformations/figures/transformation-SoftwarePipelining.pdf}
% \caption{Software Pipelining} % \caption{Software Pipelining}
% \label{fig:transformation-SoftwarePipelining} % \label{fig:transformation-SoftwarePipelining}
%\end{figure} %\end{figure}