diff options
author | Tiago Conceição <Tiago_caza@hotmail.com> | 2020-11-25 03:52:12 +0300 |
---|---|---|
committer | Tiago Conceição <Tiago_caza@hotmail.com> | 2020-11-25 03:52:12 +0300 |
commit | 00179581dd95f00e25b9d15d0343c39c7017d79d (patch) | |
tree | 8507825fc844ee19a6427c97d361d4a5c996df9e | |
parent | a4bdf8f9f3c5fd9f0f84b1a3470d478694b66644 (diff) |
v1.3.3v1.3.3
* (Add) Improved island detection: Combines the island and overhang detections for a better more realistic detection and to discard false-positives. (Slower)
If enabled, and when a island is found, it will check for overhangs on that same island, if no overhang found then the island will be discarded and considered safe, otherwise it will flag as an island issue.
Note: Overhangs settings will be used to configure the detection. Enabling Overhangs is not required for this procedure to work.
Enabled by default,
* (Add) More information on the About box: Operative system and architecture, framework, processor count and screens
* (Fix) Overhangs: Include islands when detecting overhangs were not skip when found a island
* (Fix) Decode CWS from Wanhao Workshop fails on number of slices (#102)
-rw-r--r-- | CHANGELOG.md | 10 | ||||
-rw-r--r-- | CREDITS.md | 2 | ||||
-rw-r--r-- | UVtools.CAD/UVtools_fb_cover.ai | 1474 | ||||
-rw-r--r-- | UVtools.CAD/UVtools_fb_cover.png | bin | 0 -> 37339 bytes | |||
-rw-r--r-- | UVtools.Core/FileFormats/CWSFile.cs | 29 | ||||
-rw-r--r-- | UVtools.Core/Layer/LayerIssue.cs | 23 | ||||
-rw-r--r-- | UVtools.Core/Layer/LayerManager.cs | 22 | ||||
-rw-r--r-- | UVtools.Core/UVtools.Core.csproj | 2 | ||||
-rw-r--r-- | UVtools.WPF/MainWindow.Issues.cs | 1 | ||||
-rw-r--r-- | UVtools.WPF/MainWindow.axaml | 37 | ||||
-rw-r--r-- | UVtools.WPF/UVtools.WPF.csproj | 2 | ||||
-rw-r--r-- | UVtools.WPF/UserSettings.cs | 229 | ||||
-rw-r--r-- | UVtools.WPF/Windows/AboutWindow.axaml | 63 | ||||
-rw-r--r-- | UVtools.WPF/Windows/AboutWindow.axaml.cs | 32 | ||||
-rw-r--r-- | UVtools.WPF/Windows/SettingsWindow.axaml | 9 |
15 files changed, 1787 insertions, 148 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index f5eb11e..63d82d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 25/11/2020 - v1.3.3 + +* (Add) Improved island detection: Combines the island and overhang detections for a better more realistic detection and to discard false-positives. (Slower) + If enabled, and when a island is found, it will check for overhangs on that same island, if no overhang found then the island will be discarded and considered safe, otherwise it will flag as an island issue. + Note: Overhangs settings will be used to configure the detection. Enabling Overhangs is not required for this procedure to work. + Enabled by default, +* (Add) More information on the About box: Operative system and architecture, framework, processor count and screens +* (Fix) Overhangs: Include islands when detecting overhangs were not skip when found a island +* (Fix) Decode CWS from Wanhao Workshop fails on number of slices (#102) + ## 19/11/2020 - v1.3.2 * (Add) Tools: Warn where layer preview is critical for use the tool, must disable layer rotation first (#100) @@ -38,3 +38,5 @@ * illest twitch * Khalil Nurullah * Nahin Mulla +* Jorge diego Robles Ayerbe +* Timothy Gray
\ No newline at end of file diff --git a/UVtools.CAD/UVtools_fb_cover.ai b/UVtools.CAD/UVtools_fb_cover.ai new file mode 100644 index 0000000..7c7faaa --- /dev/null +++ b/UVtools.CAD/UVtools_fb_cover.ai @@ -0,0 +1,1474 @@ +%PDF-1.6
%
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[23 0 R]/Order 24 0 R/RBGroups[]>>/OCGs[23 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 45582/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">UVtools_fb_cover</rdf:li> + </rdf:Alt> + </dc:title> + <xmp:CreatorTool>Adobe Illustrator 24.3 (Windows)</xmp:CreatorTool> + <xmp:CreateDate>2020-11-23T12:19:18+01:00</xmp:CreateDate> + <xmp:ModifyDate>2020-11-23T12:19:18Z</xmp:ModifyDate> + <xmp:MetadataDate>2020-11-23T12:19:18Z</xmp:MetadataDate> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>164</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgApAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4qxHzz+avkryXERrN8
PrpXlHpsFJblwenwAjiD2ZyB75di0858g5GHSzyfSNu94R5o/wCcsPM107xeXNNg0233C3FzW4nP
gwHwxr8iG+ebDH2fEfUbdpi7LiPqNvNdX/Nr8ytWZje+ZL6j/ajglNvGf+ecHpp+GZcdPjHIBzYa
XFHlEMZub28um5XU8k7VryldnNT/AKxOWgAN4iByUMKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYqr217eWrcrWeSBq15ROyGo/1SMBAKDEHmybSPza/MrSWU2XmS+on2Y55T
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
q7FXYq7FXYq7FXYq7FXYq//Z</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID> + <xmpMM:DocumentID>xmp.did:367633f8-4696-b749-8512-c1498ddb0f01</xmpMM:DocumentID> + <xmpMM:InstanceID>uuid:27304a44-ca92-4aa2-9273-abdf6261c3b0</xmpMM:InstanceID> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:cd6ede8f-c0d1-4d33-8683-c0a4520c0ab4</stRef:instanceID> + <stRef:documentID>xmp.did:5674f5de-a82e-0343-a125-2f8c4317abd4</stRef:documentID> + <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID> + <stRef:renditionClass>default</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:3511cec7-495f-f94e-9abc-163cc2354403</stEvt:instanceID> + <stEvt:when>2020-11-01T01:45:56Z</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:367633f8-4696-b749-8512-c1498ddb0f01</stEvt:instanceID> + <stEvt:when>2020-11-23T12:00:31Z</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator 24.3 (Windows)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <illustrator:StartupProfile>Web</illustrator:StartupProfile> + <illustrator:Type>Document</illustrator:Type> + <illustrator:CreatorSubTool>AIRobin</illustrator:CreatorSubTool> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>1640.000000</stDim:w> + <stDim:h>856.000000</stDim:h> + <stDim:unit>Pixels</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:Fonts> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stFnt:fontName>SegoeUIBlack</stFnt:fontName> + <stFnt:fontFamily>Segoe UI</stFnt:fontFamily> + <stFnt:fontFace>Black</stFnt:fontFace> + <stFnt:fontType>Open Type</stFnt:fontType> + <stFnt:versionString>Version 2.02</stFnt:versionString> + <stFnt:composite>False</stFnt:composite> + <stFnt:fontFileName>seguibl.ttf</stFnt:fontFileName> + </rdf:li> + </rdf:Bag> + </xmpTPg:Fonts> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Red</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Yellow</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Green</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Cyan</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Blue</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Magenta</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>193</xmpG:red> + <xmpG:green>39</xmpG:green> + <xmpG:blue>45</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>237</xmpG:red> + <xmpG:green>28</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>241</xmpG:red> + <xmpG:green>90</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>247</xmpG:red> + <xmpG:green>147</xmpG:green> + <xmpG:blue>30</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>251</xmpG:red> + <xmpG:green>176</xmpG:green> + <xmpG:blue>59</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>252</xmpG:red> + <xmpG:green>238</xmpG:green> + <xmpG:blue>33</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>217</xmpG:red> + <xmpG:green>224</xmpG:green> + <xmpG:blue>33</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>140</xmpG:red> + <xmpG:green>198</xmpG:green> + <xmpG:blue>63</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>57</xmpG:red> + <xmpG:green>181</xmpG:green> + <xmpG:blue>74</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>146</xmpG:green> + <xmpG:blue>69</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>104</xmpG:green> + <xmpG:blue>55</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>34</xmpG:red> + <xmpG:green>181</xmpG:green> + <xmpG:blue>115</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>169</xmpG:green> + <xmpG:blue>157</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>41</xmpG:red> + <xmpG:green>171</xmpG:green> + <xmpG:blue>226</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>113</xmpG:green> + <xmpG:blue>188</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>46</xmpG:red> + <xmpG:green>49</xmpG:green> + <xmpG:blue>146</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>27</xmpG:red> + <xmpG:green>20</xmpG:green> + <xmpG:blue>100</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>102</xmpG:red> + <xmpG:green>45</xmpG:green> + <xmpG:blue>145</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>147</xmpG:red> + <xmpG:green>39</xmpG:green> + <xmpG:blue>143</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>158</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>93</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>212</xmpG:red> + <xmpG:green>20</xmpG:green> + <xmpG:blue>90</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>237</xmpG:red> + <xmpG:green>30</xmpG:green> + <xmpG:blue>121</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>199</xmpG:red> + <xmpG:green>178</xmpG:green> + <xmpG:blue>153</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>153</xmpG:red> + <xmpG:green>134</xmpG:green> + <xmpG:blue>117</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>115</xmpG:red> + <xmpG:green>99</xmpG:green> + <xmpG:blue>87</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>83</xmpG:red> + <xmpG:green>71</xmpG:green> + <xmpG:blue>65</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>198</xmpG:red> + <xmpG:green>156</xmpG:green> + <xmpG:blue>109</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>166</xmpG:red> + <xmpG:green>124</xmpG:green> + <xmpG:blue>82</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>140</xmpG:red> + <xmpG:green>98</xmpG:green> + <xmpG:blue>57</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>117</xmpG:red> + <xmpG:green>76</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>96</xmpG:red> + <xmpG:green>56</xmpG:green> + <xmpG:blue>19</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>66</xmpG:red> + <xmpG:green>33</xmpG:green> + <xmpG:blue>11</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Grays</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>26</xmpG:red> + <xmpG:green>26</xmpG:green> + <xmpG:blue>26</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>51</xmpG:red> + <xmpG:green>51</xmpG:green> + <xmpG:blue>51</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>77</xmpG:red> + <xmpG:green>77</xmpG:green> + <xmpG:blue>77</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>102</xmpG:red> + <xmpG:green>102</xmpG:green> + <xmpG:blue>102</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>128</xmpG:red> + <xmpG:green>128</xmpG:green> + <xmpG:blue>128</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>153</xmpG:red> + <xmpG:green>153</xmpG:green> + <xmpG:blue>153</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>179</xmpG:red> + <xmpG:green>179</xmpG:green> + <xmpG:blue>179</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>204</xmpG:red> + <xmpG:green>204</xmpG:green> + <xmpG:blue>204</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>230</xmpG:red> + <xmpG:green>230</xmpG:green> + <xmpG:blue>230</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>242</xmpG:red> + <xmpG:green>242</xmpG:green> + <xmpG:blue>242</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Web Color Group</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>63</xmpG:red> + <xmpG:green>169</xmpG:green> + <xmpG:blue>245</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>122</xmpG:red> + <xmpG:green>201</xmpG:green> + <xmpG:blue>67</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>147</xmpG:green> + <xmpG:blue>30</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>29</xmpG:green> + <xmpG:blue>37</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>123</xmpG:green> + <xmpG:blue>172</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>189</xmpG:red> + <xmpG:green>204</xmpG:green> + <xmpG:blue>212</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + <pdf:Producer>Adobe PDF library 15.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
+endstream
endobj
3 0 obj
<</Count 1/Kids[5 0 R]/Type/Pages>>
endobj
5 0 obj
<</ArtBox[0.0 0.0 1640.0 856.0]/BleedBox[0.0 0.0 1640.0 856.0]/Contents 25 0 R/CropBox[0.0 0.0 1640.0 856.0]/LastModified(D:20201123121918+01'00')/MediaBox[0.0 0.0 1640.0 856.0]/Parent 3 0 R/PieceInfo<</Illustrator 7 0 R>>/Resources<</ColorSpace<</CS0 26 0 R>>/ExtGState<</GS0 27 0 R>>/Font<</TT0 22 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 23 0 R>>>>/Thumb 28 0 R/TrimBox[0.0 0.0 1640.0 856.0]/Type/Page>>
endobj
25 0 obj
<</Filter/FlateDecode/Length 2098>>stream
+HWn[7߯- 7ql$EaH$'@W] ,q<Μ{wo;{}ݜ)љ}}0_g.h7@yjbAl-&\6J6YIh6IܟB)9` +⚐B.Ӊ
Ig>2Hʵ@j#$J}UP-A,>"@"
&I]vy8MS2[dNR4bϕP))8oC+qWIW~njsEAM|ScζE"NtS8U@Z)v!H=8yJ + 9|M@M.Tfgƫ;yqpp_26 ;3*H^S"ƀ+2M-b; +D/'$}c (ZA +w8:DNM4*"cat 7bKpX#W)@Q +MtC\ /"YHkǒywPgJУ(tU"8$Cp$& +endstream
endobj
28 0 obj
<</BitsPerComponent 8/ColorSpace 29 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 55/Length 356/Width 105>>stream
+8;Z]!i=<^I%#"*FGlOSCj(O"OgEc%oN>qUZ.3\WkF@T8uR_#\q$;l#d`uIsm8*I&4 +J4^B:rY[,]mX[p)h]1I>@XudF=EV(3FF>ga>nZ'<AY)#D;:*dj2`X2"Y.`HSlO-4H +mrL,IFf+\8(H'S*,jr`"`Q1-`Ys#.I4i6NX5(n%]![h,DYR06rL<U(28/6)6&BbSj +!9$#01q(sfU12nK;@cFe^P"r<nPaZ\RLpsjhGmuE:sHWM>-fMt:dMb"d,%.=)l[oc +#-r*/6.ScmJJ%RnY^)n_+B_!p-HLh8*hE)$/$h@"SsJ2fa9jFN4:,P":d1fR@C6US +68t[*0-m-\2`5_<4U(n6[e.l~>
+endstream
endobj
29 0 obj
[/Indexed/DeviceRGB 255 30 0 R]
endobj
30 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
+endstream
endobj
23 0 obj
<</Intent 31 0 R/Name(Layer 1)/Type/OCG/Usage 32 0 R>>
endobj
31 0 obj
[/View/Design]
endobj
32 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 24.3)/Subtype/Artwork>>>>
endobj
22 0 obj
<</BaseFont/EFZPZL+SegoeUIBlack/Encoding/WinAnsiEncoding/FirstChar 76/FontDescriptor 33 0 R/LastChar 84/Subtype/TrueType/Type/Font/Widths[541 0 0 765 0 0 0 572 636]>>
endobj
33 0 obj
<</Ascent 1079/CapHeight 700/Descent -251/Flags 32/FontBBox[-457 -251 1478 1079]/FontFamily(Segoe UI Black)/FontFile2 34 0 R/FontName/EFZPZL+SegoeUIBlack/FontStretch/Normal/FontWeight 900/ItalicAngle 0/StemV 208/Type/FontDescriptor/XHeight 500>>
endobj
34 0 obj
<</Filter/FlateDecode/Length 10867/Length1 28173>>stream
+HTgAy +EQyOjd-jbǂֈ C@ĮbFm٬Id&vKD,ItIyz9;s߯k3 +RyJ>0xgZ8 BEŏNX}^g\K]k3u{w]xg2M|E j#M~׆W-z;q'<X(Ea+ݰ#XnP`l%T7B!;C8 "4D3pP DXW\RXDHPI6 )0.d@dlȆ9 l\1v<?QCPFBF +װ9a<@O|0g`0[b+8[LL6>a*A-<*f`[阁qfc;/Ź8;`G|;m<:D>7NGS>Hg}%/tNi:Cg%?TB"]tJ[J4@H7;Ietʩ*t]G{~M'zL?/+=TK9:r0023VXenčٕM܄qB{rKn^ܚ۰7:mq!.Ÿ2nV܁;܉ܙ.ܕqworO#{qo~Kz[+q~r?Wry!RTC9p#9GhR)J_P*r[Vj;]r_=TO3Yz^-Q/Ke + <'dT40ñ<<S8xsgr99syy/%rwyUZ^yF~n-yv;y~A>ć2@(ft!2E-l#r\1ODX(bX*-|&+JJkZNDqB'6ua܂P&6-b(D.vb-b@A`e2T P)ÕH%PV1X%X'
t +(iRSp=(Q}uުzm m۶mvlwĶm{{v:N⺺nz^~A(!n憻nF1nƻ n&)n榻nf9nn[%n[斻nqjFk55ZGs}/zZ_n[/ͥVZH[i'tN.%Li-E4ZJiZE!ZLh=m6Jh;vnC~:@eF(;:J8/GNA9,st.ED +]o}~?C??S?s/K
vP[}ﱑuA7ml;t}lczBO=^kzCo>gB_}~! +"#b"b#"#"# "#R"R#
6!-!=2 ##v 3 +a#o_?I [H`[l8"ȉ\؉]b؍=^~($DMK)$đpa@J"qII,I$$BRJ*ImlvJ:Iol]Q2If"Y%dSrIn#y%RP +IaCHQ)S8-ťRRZHY)'奂TJA?JebW]vnIUS&եԔZR[H]'ݶ;vicmM6R[ikmmQ;ig]vS{io}:P`Cu:RGhcu :Q'dSuN:SglsuPb]Ku.RCt5Vzݠun-Uvݡ;u={uzPa
p=GzR'_~C/͙75E"[j,Űb[k,%[Kj,R[Kk,e2[j,尜r[k,V +VĊZ1+n%VZ9+oUV{h=̞ ^^
>>~سq#pDđ9 +GhcpLű9xpBNĉ9 'dSpJNũ9
t3pFę9glspNŹ9|pA.ą.E\Kqi.e +\+qeUOW\kqmuܐqcKh<M4pSnVܚp[niGĝݹD
D-FE=G4D#4F4E34GD+FE;GtD'tFtE7tGD/FE? +4!XXXn찅Y l +lFn8LS[[a8LLLLLLLBTZ`Lelͱ6[hl-זr[a+-Vj[ckm
6f=|#Mz%Wj T ئ3;zrIYQBؾ)MdFlVJ!1 +MLa-Iֵ݄Z[!xiP%mPZ\;iW9|w>sw_p_T6)_V,%/QW/#} 5"18Va-5@06(*+(RGP>Un*)+YYmQ[6嶒V2*DTQTC]ՐVe%_R{m\}dp;]%3M/s%=fGqd5 cs2|4a߳@@<_Q5&2}c +19&}<QRu{ƞXW_}#k֖G4~aښeK++Yi30?OU.Y5:# =IMfPƤ 'uTI#GDLO=3rK#kiܱ$TgaO.caٌ3ܙKSߏNV<[d{l39T~^jk |etW,k%DXfI eqfuvYfX5bn'zm?IEӶ3o5aV?JqMVͣFcw։]0Cu:v%ɜU|ʄ#1v ;9ک{pC!&2Sk?gYm=e6[Lhׇ(O;6K
NM{4f~6eqxF'tTǙ46r&+4Xgl&UtSM>.Mc˳ߦ3B{~qaF*z0<IDgx:[=3813S+Lm;t+;쀳r\rn$ 5Bl +<&.s)Uk'anaU?Z?~uK3#'@"TuIs$LѮ^ku.*PKˆBdx-AhAގl7sW(Hܑ6``U9q2/Pd.'qPFS*Pq,Kyq:3{8(p0ϝU}=`!LGdڽu<SB6Ns3"ulǜ_29nӎ~v[͚lګ=*(kkR (Jd@ƱS%T9Ipr!gth1d^4 +f\vXK9vj\MoSI4Dž,x
K˽U>Bo.>髿mYa;&ګkdП֓a}ꏟ/J}4fYDl݈QHIA(K1U;w0'aWKoH*EnMHCZAX<y!?{G~sGZg#=@R~ 5G~\ ^oa%S +8#%BHan}y9`(Ø-b# 0&Beam2̩-7~uG &/2_<P#uH~h}|$7o1X2A4$=MS?Ai <3tE|b~ۉ{<$X^ +4TP#~'[Ʋ!sC䲻T35".RW&sSW<={hC0
t?Vls&j54J?";?\W6AhQi_mxʮ̠\6s/y<q~|9E+Ǔ͓8:A]N1MaOCxT76z7ەmvw8oBE<q.q%5\s8wY7pR`Ӝжtv&:\tA]uy-_7-}r_nI-YX +{ û:l;^=E_;GsDzfmT v
Z>za`)bk(O>C$ ?wpYvĻ:Xbay{9GzQ8Clx{ b5|8)xvPψfHqެ^X<Nr"ưqe@/t7(\2y +2uF>֫`enuV2C?L9VOSTr
QE&^ם?5e.7W-}hf16z_&5# kCk1Mr[;zb1)3lW9W']
3ujSޯA"<c\C +_^5GDLPyPgu ^ElmW<-sTwڿwMu_GQg0sF<*}dMC4y8簾q8@?ʎ~3 ,ȩ y?T_$3Niva;{i)J.nܷszC3.vMU$kCN'?_]~{._Lt,S͕osqyBc:^8.=h/`BY,9FŘ%՟[5,%y$&?ޏyycvzp-m*{=xLJCBؽxJȾ̀{sɃϖqCrlf +fR2j-2@8r<9N^+< (K.:<|"Ծ]QU%@SGU</w/ԵPjw2;>#mzw̜F߰МvN#"u'LjAVS!@xzvp~+ςA +$ypz:xznƉI*f"pLHa*~ƪM0xs +mЪUS<\_O{1zd}yʗY,p݈ZߛwyԴ+)Bߍ@|EkCx!wl8Dx"Vęc!G+F(K2f/B5oY尭q>K}b|#vU|koa.;ۈK<<5m7mc
9vhcQC_ +@?: /(I!CǨW8 +Kg3ҪA3RS!nꢤ啧ͅAS!cbmn S
tV0 +endstream
endobj
27 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
26 0 obj
[/ICCBased 35 0 R]
endobj
35 0 obj
<</Filter/FlateDecode/Length 2574/N 3>>stream
+HyTSwoɞc
[5laQIBHADED2mtFOE.c}088GNg9w߽ + +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'K +x- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r9\A&GrQhE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mDeԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel
}}Cq9 +N')].uJr +wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó tizf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=G</z^^j^ ޡZQB0FX'+t<u-{__ߘ-G,}/Hh8mW2p[AiAN#8$X?AKHI{!7<qWy(!46-aaaW @@`lYĎH,$((Yh7ъb<b*b<~L&Y&9%uMssNpJP%MIJlN<DHJIڐtCj'KwKgC%Nd|ꙪO=%mLuvx:HoL!ȨC&13#s$/Y=OsbsrnsO1v=ˏϟ\h٢#¼oZ<]TUt}`IÒsKV-Y,+>TB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY.=b?SƕƩȺy
چk5%4m7lqlioZlG+Zzmzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś
nLl<9O +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs
2F[p(@Xr4Pm8Ww)Km +endstream
endobj
7 0 obj
<</LastModified(D:20201123121918+01'00')/Private 16 0 R>>
endobj
16 0 obj
<</AIMetaData 17 0 R/AIPrivateData1 18 0 R/AIPrivateData2 19 0 R/AIPrivateData3 20 0 R/ContainerVersion 12/CreatorVersion 24/NumBlock 3/RoundtripStreamType 2/RoundtripVersion 24>>
endobj
17 0 obj
<</Length 1211>>stream
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 24.0
+%%AI8_CreatorVersion: 24.3.0
+%%For: (Tiago Concei\747\743o) ()
+%%Title: (UVtools_fb_cover.ai)
+%%CreationDate: 11/23/2020 12:19 PM
+%%Canvassize: 16383
+%%BoundingBox: -768 -808 1077 363
+%%HiResBoundingBox: -768 -807.2412109375 1077 363
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 14.0
+%AI12_BuildNumber: 569
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%AI3_Cropmarks: -692 -556 948 300
+%AI3_TemplateBox: 128.5 -128.5 128.5 -128.5
+%AI3_TileBox: -284.49999332428 -417.200005531311 540.500030517578 161.199981689453
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 14400 14400
+%AI5_RulerUnits: 6
+%AI24_LargeCanvasScale: 1
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -768.679999999995 556.999999999999 0.462962962962963 1062 636 18 1 0 46 87 1 0 0 1 1 0 1 1 0 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:-272 -428
+%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream
endobj
18 0 obj
<</Length 65536>>stream
+%AI24_ZStandard_Data(/ +בPs6n槈!fjUeZf}Y*ⱔ%<hfe*]mi_%TƗGw<纳xpc3ar,o
9_UY-zc$EBCc8IGv¢bc;)ec(HeDLKeQcHs07X4 +D%H(QGm,0\429Eː=uʪ=Uy5_+19ґPhdlD٦{m#v)5B%GZ=3ˡj:v7Tvw+WFq H(j EBp,u1s,,,$W^p$h4|P-X8ֱX830(PX&EB5[BWPcL('&gEN(xb #X\{YQBх#kEBư=E=oQȐ +ff Dt;.C,[,* "j!0&FiiPy@_ð *PI;i>XPL +*K(x,$;Pl><#0Ag$|a BBp4 +;L( +cꄢ0ƢP[4 # gӟ47IHc"{ԣH(^Y.7n = +'FBxBH(ch0 08+,c ъhadD ƬeLzQ^쵰)CʐbiH.CW>K#;]Vl2t+xYT24Dt:vʐwƈƨn4W4i!<^& +,֊:GB`0ƨ&űQBH;0928-BBX`,,kЁ|\w:BY1j@ѣH(`8ҪEڂ],|-㉕^'PT`L+r3%cLBQe6t1є
Իb2$ + 0P@|BHp$92ĤPlH( xBGBQƣh0 E"0F1㋼-^tPt<O#L(()}<&aa!=q'xwvuu`Ҭla+1 EQBH(.8cĄbi,$P4 PYBp0O|$X E
F&i8PTZ"CJJ: +1ZVǣFF EYY.akYނqp3Ǽ E2x/.AH(sba|lӄ +<L#p<\eKFBX4&OBфTv ~H(x< QGBqy-8r%w0 [zᇣua}G
ñ_,,<=ǂp0~,xp%Zm1qm3:}/p?ࡒ)H:-A
rЃh墪z-Qrԣjf#+3;CK-a
s,~c\,
d`l:)+-/1"HG>r!O8;gх-n\|X0cX,,aa1ac #g,F`<i5axh<!G9qt$c`8Xp̣?Q{cᘅ.nƂc1H(QGBa*;/ 'Px0bj*{$v_0&^0/
ccXX,|!plj]Xx< x0|p0w09q,4FX4
lXP1ƃ`4@1A2x,Ƃ`,/r[Ԃ]b7/#E>1/-+t`xLD<,4qcgW%氆5la722B=QZԢZSrtJB:*y7mddZx8^xP,p>hEn Eh=,c bØ,~XMBQc4 +N98\6/8 F
FOL(W$<4MBaE$H("( Ձ HJ +.xp +L0"D@` 4 <4D` +8P`h`BDC2048@*
",TÃ +*H@@ +P@(hP<<4<
.xpX,Eb/0hxh@!A4<@4ȌPa " $"Dp +
&Txp0B$<8D4x`x
d`Px
%
> +
"T +4xx0L +&pD<8\0C
+(H(&2〆մ,I" +: +"< Dpp*`QB၄L
+4@\0b +!`xAH +
<p +X@L,xp`$Sʤ +*D +-/8ge3V鋅h: +7:?XY)[oOj͇8%軍T*b 7^*͈l˩wCs2nI9T9u2vG'WJ]]zB;]ɫ|lM;6XN~|E$^V#Ī#J%g;[̲5GֻمrmA*L3_ӔKOr<tGLC:+*Ԡkw`eΨ5\6Y:ٷޱzQ1w7vDK+]u2!MaVz/f.?nZ=k%ݫ5VF'3dU8ߧ%۷s)3+%&^o +KYrMz,IGxg;Ow;Y>!ue-W=zaإ6CDuצ=9SHv:x3']HX"S]g$[;Ic|J}/vtnCY5jHGTJ*_H\1K@{gd3if9Y_se3ITErN9M^Y.jݞgivyټT\iIY<.SɃV2{[Jlbp|\<+Pt2KW;gWֵ=ӲCOqU%Us/Ó^*!u'U5yb6LRӨȾfr4ie4%b+7&'#RY
{vW!V0n7ΔnC;-teW.H˩Z#++gBD+`96MTZOeEw윑6lMo5?W:HM;UصvJ۲WJWXKfk/uJ_i=BՏL^3^)Kcߕ{:c9S7hєa}7<K;]zMYWdfϒh<%y=Y^&虹)㚳8R$*Ϫ)>L"+u#Bhҹ'ՂhV24qKF8%_܇WgETgScT{93g2oʵry/[;dUľudw&ɜ%$srJ*}e!1 +Z)ܽKQ)-~5<N^*#*~KYE,X\zdeG6IY>yo%wK<R3DoVlJ)>E᯼WeM\ʽ]̽":Wh\+
fF'$Dwz*u)ڦGiri51N6ސ`ŬNDݼ>ŷBy,b]";aI[&X=smfBYii4YyW4b%|SnJ<yn"|mxڕœJ.scSN{iDY9kXOi%sRYBYe*=y,>q놉%_b/,u:[pLҚV^)9W}ut",&Xg"
]ughc#չ)*-4k|Ò7ŻfJ0=#{.s6Dv$٩Kakg˗A4酮$tT%v?D]1BnUXnNG*+;si/,tN,u=]ݕJوTgiU*d;ͥcb3V߫5|+>U<⪙vrTCo$Je@oSNς[j4k
klx+%[)fg1*oҫ$42IOJZ MK%AX^L9VUuNIc6:fMj]D+iVތ[`$jZ ]IKdN\&U7%ǥN.k|uzq$uSp:IJ5+g1)ˏjM11KizXm3Sʈmʨn*dWay6ʼ)c/l
,2P>]TTZݩ{UqtJ%]'1BD +UW,Y9gZrJ7f7N,t_A*ݛkNtn
I O;x,S{tU:ܻ)\\ +"qXp^zġ2=>^N`T +%ϲ,-$mnC%KNBF^"Og+==efz6S$|V<l +R!]WFbd3$+W3W$s%%-K%J$W:Dhj%aX9Ԩ$J)v:-1z[А䑳&&LK9k3bdz(XN$]#*j1"ӓʔՕ<=/SXb=u]91,SB=$:J^>iSL.k-% + 5KyuLl˯]3&ҭU*gżW!ڨI[4J܄-GBE軨2z/ +Ǯ}Qd Io1#UiR4rw7ʍНC8T҈є`&_6V&ô4uҫ +;wE57_il0{6!5WdIUS\:.S]zUVEU#+X+}eeeÒr&C%վ*c܈aة^}UnfOM]XMrG*fb,Y"7=J,թ 8UK2Nf$BFS,"&iO44K3b[]Q˘f9C1'K%e?yX)x.`a"w/*W;.V-,OVs{VIo*Ksχ4Kʵԑ ъfXHYޏU}_Es!l)f^iMקI2w*9,I#ciz;b>uU7a%]$^CkֲDZKV]R;6bGebdJ}-M#_C^;RSFLvӭئ#/a+,>e/i?fSzҞWF6ȕ>*Yq7V8V+D34i|kPdCR[ʤJG,gB5ӕ$-KBShzYe䴔JVDe\bwRjVeRGZľJ*5Lj9RH
'5]JzG,*ԩ|ǚQ[z&N#Tޛ9[̡!1y&ʑzhI0g](o*Nha"D,wGkn
W$][:!6fĄ5^Kie1#iOؙLL˦u:sfх}uBGxy8v)W].ľGswȮu-n|YQ9_Neib}:^UZɩJ"yJ#&1)HGQI,+YᴬtN$%A3oIVnܲ$ooGXNjp=jW8ֹ#WlX5sM?ˌOSYk==^\ +\$Y;e.mY$+ۭ%'Ov8f6Ll%fm3~XrlY#:믂Efܙ +:v:Qf!{Y6- 4cKj*7SfY4xNtSni3Uϕ~hg+5/qL}U5S֕i};U?ʘ5Eﭴ<iwD%6]'>ͰД҈SU+ug'$ܽ<g˷UO2+p +_`մR;ʩfΰTj^lL}L'u=^{n|zϡk5˗Ed!+*yDt/J+XJ4ql1cAj9{ҔMh%2nt1$;NX!9:aQ˕2Ú\Yt^Y2k=YCK(*h <<PxXp`BC
Pp䣒4p@ᡁ!!$884H3A0@4!PpNV.cOYOgJ]yl<K2*Rv32NAKiJQݳ\_E_I*cW[v 5~S֊X,,C,tUlDYZ){9ʲr+uk1f%."Yd2/947+7V2Sr,RyBbe뾗*v2XX ]5vrei6r3z,٭%;Q1
_%*I/5iXegfgkfegDg~Kc刓iO+Ɛ71^!לMMYf^K-uID$c3\,5Ji\~ʏi{2$ʐZdRÖ2<_-UÙ6eƮ^4S;S`C+=ě#V92
s`BI=rKX*;ƆrYINA^%ՎTU|Nd.Iy*ːhz))TlI4m&HVs`+]*3toUXߋʠsU'eNZ~\7T/?tͩv4<Wg!Ur}4vVJ6",Ff
J6E~&>ybϤY[!B έiMYvOӬ9PDHGph +#tVr敫vĀ9R=?-dfHՕmkZJ&r%sIHe̜Ef3NT|C~W^ȥgHChL78tLO)[p72.%U5%rn;vF{$^KWdjۍU:6Cuj啗˪nWX2:bd8fX9oɢB±IϹ%]=\\ +d%}*UUmyc\j|*=X+3*gZd{"g~ꓷBd<,VLn\hѪ&׆SfWp<ʳ86UˀPs.}:c}>T&TWtܯLXƒcJL9ŘifrSCt}}ZZRtySY:f$^nTw6I,I,]4We6-c3ES4K5͡;)5YzLU6%QyaU֕mG˗{Պ1\.W;~*QiWϬޕYjt#ݵ6{xTDfv?dNEqӺyw5hY֊eJO/;[f3%NkXjSxU7laQm\s0od>Xцsh{#[dUeJD%$?h^9F{T۴?Z0iW;+EXf#V6D#H7ģ u!TYԔ2cNHu]oL~4dRid}Z_~;C6ZqbyhS$wλTa-w˴4x=ب +yJZ5/G?At:!YH%we*:ݵ7wdz;vϩ$*OI$XU+,4#r\JZb4rW5/eNyQsh%#3TN'"DWJ_߭u>i3AZ˘HUo1At̼
erơɂIKMTLe6Y,61*I*,Fml-Ua];s8wX2 Dݥdl-Cײ2 +u+^r謬)9sfSݔQٕ".5^45a2+"D$u'5>|ݕzD0&mw{94wȭw&=y5v)UaX*VB1K-捲^*5W|;]~cj<ՓXUt⚩gFhnwehZEW)D֧չZZjxuwLW})MSFlMdC.w©ṮvaN<j)k>u?wIՕ-XI+ᯗFd\U}f_|3Gs_fY:6!g +hHxeW*VGŬ$WGTIl:|W|J&)sOYhprL<sቡM̤s(&I̲K$¬T{De%ޔU\eWHusi/y~i爬:GdInDV, 16r!A;qLB!Ξ!Wc)7;Dfu9Eʩ"˩#ǜ*z")Tr:d6nJ]#,
ZؙձKŪr>xƞ+ԛ#V<BJ"1/̉%8<X\({b]}Wi]}civ5wU,8wU<{>i<ܮ:Fx3ICrC]fwuXwWEOX76srleiRf+EWSfۙ)ε] +(@H@B +Td]َBvR>*Kowv,fʽib!nj>UlfnfٸY6&fez;Ce/sT,v3]M>ӊ%Y
ijv!^hL;Bk\RWU!#fi}\͝j膎 Y6Cc9f>,c6VD,GFF:laxSD[;{*TyS͇hdOPbg**KizĂs_]JMˌK|WCi79gb7%jꜢc}%
9k859]S6]v[rW]DZIrʱUXD6N~ae2+NMٕ""ۮ]H +bUNMөOϦƮ8Se%Muk
#OUc6U{*(j.%Rf5S_,36-%[ۖ4!tҕxV-VeSЪjBDD+UEcʌ
jJ4EgJ9ӏ +[k[!rlb!Bk%;pf|\(OV8lf:SzٖC-K"7)bsYKs|!,3Z9,Rؼ2R%TÖ;4A;ݧCr.<?5]͝yV0ʛ=^qUƈu$,;ڰ"KdU%?/K,,m^!ZU6l/vHJ"fSd,͑-/r=вTL%ud9aі=R*XYDG[2̰ndtf%[sYՍΌcXu{$rueX.{#]oC+wJsV8c۬j;6S(]:H"UQuʊm&БOW}3vv=팅^ҧ!a]dB|*KU-7N<|<DHr#2)aY/mV}l,Sw5|N4*k夛9aL.j;X-=9IF&̃dt:bd8[E1tGFS^Kiz3iJPZ}+Z]Id[I3N&y'dOw'$Oi4%'4ER&$k:ߌ2 +ݕ/+b.2J.Tıݕb?*OTkYc!f V#LڜAc{wfӹb_tVem9{N V<)u , Q
RBsU=jsUu*ncjoy~sՑ\BB*W:ٹޫicɰL_vJ݅?%my՛Z~~Y<9_,p˲hn4<%wZ>X^kZuB`UvGj){Rb+ZJii*5TsRKe˚2dJn>컚T͉q+zIvMz*2),,U^3cW:.+eLRS) +cj}+` NG%8=ʏ+2Ru5q~sӂ=1Yt)moX%Mމ'_.Ȝtd$7k(`>#JŎC$Mvf,XTq>4RWI +]!5<|]HkYى*)?(\h +2Tx;Dg` Jv|Su\XS~--C<V`9hK!Q8n +!ƧzrpEք|eU7uׁV76jegO`?*!nU*^B3\\Y
=e)W ̢05!m-\ZO +.b57[($td(?)iD6[ٜ|sD]"_`("<Q_@Km~БK(wKowذg2d{W
!s G1R*,Tx@j3,rE-h~ҭ@}V@$0
%k<2'hdLQVwօM6/GH$z +uP=pYlG3< +PfNr#` +bM/G6Bz˓VӇstsQ*GPo4bx?4VXrD\Hfu3iV?/%oXt?\Yo֞7o)_P &(@zc7_&IBW/XkC +Cqڝ>9;?j/i %SXoI~8\rqjM +)SMxGP7 +NcM(~ՅR4 +USǸ^qWΣUcDB?{?nMM "4I2"Ƙ/0} +p#>':cZy"\~07vD<O?^s$;GOg +s9Cv!<z~"w_;A_[Eʉ#{7I)ʆUi'{N ]|GĿll1Ksa-sl5hTn~KX2> ЦbKvs+?@{`С9΄i|$fh5ѯ\yIOg<0qpN(ŪC!o]5<Y7R+ye`Ǣv}%Ϛ)m1y9,("ݤ(7BzG& +^y
y4S=n+ľP:, +
++3X Ӫ\V03X,qCD4mm
݄zt[KVI(:e +ܙ1
LOӐ~Gd?s.Y $%kR> +7ƿs +]Im +_`Jm +{䠮Z66]d3OԀ_dxuBd +ji;Āek$iĞZrO +cִÉi;F"Z bA̼ aK5@]jhVɮqdHx6Ƞ}VJ8WA[S
Vg\"j*|UH ia?gK;t4¸Ab+rBv<a2-Os?f$r=CZ g?I3q\mٮEMǖK
pɓOSס?ȍ"B"C\N?RrP Շ*1 +@>g|i`o[ia?dsX䳓*q9l +2Hh6U [xb>ۄ&16 J*6+vyj`Z埸/@#hDG=;!MΉL)$G۟0tAW$Dްq7^AMH14e]vdsy+nhڽf^t;' Ww3dmS?#~%qU͉+Kr=ՉO
0fED!Q×w3jb|? +⍭rT.pYh?w/c1jP$;*Of5Zyw zFE6?@4C1>z$ΓSLl;3_ڵU'l#aDO⼵VOh~FQ4.C4$STOztGe2T]q%$EgE:L7J*|lt-Qo&JwdT0&gB]Y1(?[trL{ʎi:= +N(cTm'RrVI1©OqW,`דL#ijv+f(zש-] +%7M)|Q#F%3L 8
ɔ2Hw7gS`!0l9by/n0 +e!E"Ro1S&J}2cNN/ʠM$Ɛ=NqwxG(U:c)ȸU>,:?
)XkEu`EHU
!tRe> +@ V^CM)h\9 +%e@u_12II&;$RHe9ȮKN4I^,omؚ\nxs.Yg*@(0+gl)@!zhD<ͼ͙i/Lum+Bg4Vdc)ϥUFIwAҬSݙb!Em%(@}Qex,mnrqkgGB7E;8v4CcұB1I2wԕ1ĄX&)55Cyj\klӔK3srT9#u)'S|}U&Lgolz %Y!TTjv=p + +tpS^ +^| u\z(K 2NZgĀAܨ62Fz^ʄnBJYsIe!q]QH +~Hb}{=kd_Um`B'"]FӜZmߝRVyIC=.콣F +o&~R%,ݷрf:қ$)Qʹ訊,Lx3Ц_L60P$]ܨ#?1U!v!>29pP +Inq֤qc +?]B1lfQ&BƤ0>S0e +JN8qO&)em5b +PS)7:-݃fS{N,5zf YEG]~kjrSTF$}-1-tMG
xMvЅ&a+Wuy,ONT5?jB@+U!OրI$@p
ɬz|VhFsnB4]O GDBkc +\"rfQde6 +]G!awPCf0hAxR{>kz&^TPrĢ)CXBZL*vWxQ4+58GڍV6bbk@>T&k RQ25RfJrTvXĴOgR4G8}8JI$Xd{`q5!LRFg X`y't[DuH*~̰nx|c+yti!\/Z2˙#R/2IEmTqo8Ul0/ĒRCaFd[0sxzs.ỌaS:Q',LXc܂M!(()fjN]b
`˚Mfޙwigmh>4
:#!4r5D&QayExk5=KMlWo$EtFyWu6 +ǚ xqL>r,^ :בq|EN{͖F4t d'/$r>9u1DŽt9v?:uJt:u~Syy$xRo#7uSٱ\;\w@O +-PzX*cYnV;mQ-C:wN@A;pxK߭iʨH.M4Vf|#*SCM1EV@s"u*-LtDG. +-`Hfj^Cv50 2sm\,Z؋𡝂aAthYH56`5¿uY
zYJ +t2ГL:LGf}JŷNgq +8bKէRUR<.VZ5Kk_7>ƛ7C@#+ŭZI/9%6jj +!d aR6x4wCuNBZ]'حAj^zϮ$,D!:M!`;!O6P8i{~]s/V+W7wZŏxSUdODGU3"|}qW3_ӧݠWzwo1CW"#U<:M̓RD.(h xX^@B*jx;3L +udpu7chWJ6158Qu@8[GĈo-Zy?l*;AXDr_ٌ|~!l`1T`q!?`%8RR{ЭT\TN-]栒%#Ym|Va9y
wS$՚^L z PسWbo
G A$l CdQ_h +(PO
xL)Mq%S̕.FII9SCr .RL>6,%ptsrWzʡU:TޝRY6sR|NQgy!#Pr9,$8I~g%M*テ9&xp IkЃe4<{@0n&ÙB2?$Jd@b=>4@Cj쾣r"/ >sA 9ةjJ?x<?+#(]#EEE?yڬMDQ=!;Q(׆eOIJEغAcJ]DaN౦Jk9*-O1gjPJI||.14,`SO)MUC'bĪ7/rʬPo-.`F ,(mPS8Lz3!ÓhX8H<XGh˖Btc; +ޜm1B2M}\tptEP ᲈ,$-$4-%i#㴛Dz=m^H2\kW{@} ڻ0H'&!dV&SS)k\X}5Svilq}3SxZ-($\)n$OvR]?bo͟ +V`(bJ)fW?nS<;,&C +hF3Z%R$hJvCT~YXYQ-&kv(
EBЩ"g}ACamCnNc6)}wkr7F-?TXŁ/> +fyiPzdV|4VV~ +_@t_|ei{"Y?ǒGYoID/zXcLlbܱJέ }!> +P&T\z7S!hn&s| +ivlCOn0Ծ.KdZ86 i~;z@:K农ގ&_I?`e<l Clx
Ayې!{J6B?UI)d8ƀC{6d_*W>yYDNd^_ՓNj{#(h@#KMx͂\ΨP7D
ǚ۳QU:hOX4ӽIbJ"j})ޭntV_Vyi%xk* *k1jץSLRXN2ZrSCTE\
3ٍ? R՟@@*x"1|Ά\N(%/ +--}jS;Ԝ- +߂2Je!I
> ;O,Gwm=:GkQ*L['p'˱EoUgмl2(U~ݘ٨2 bMb3b +>}f奌|$DsH`~
a,#1VTaBⶹ`=3
-4NsQ@Rt.$kb +E(R,?EcOowLyRM_Oa\Ga؊yo`FFYcEltǥY K 8e~Guj?>
]W:p&i:< +ۘ@=k}DACލ!f= +W:Cft +4^k]BZRf]qRYLJbz֭b)Pae%@as)a|}C80vӘ^$ߤD4p7&Iydth8~~-^ېWtJZ`VC-3KgGȆXJybڑY#{dBĞ9@)soE3>DիN^Wml +Hl<vT"B!NU^j/^"D`ȮpUͬ$?tcpD&s*ܶX`ǒ]a!)"pv(
WԒ))õ
}RKNWThܿ*Lc '-!7BN* Jn
91G,8 ZME6HDŵdTx< ^i2'P[r_AJ^Pl+65Nq%r4ha&Vp1ƀOj8;yJ}r{%,J
2:JjWN=R2'_@E\s|';E#@sj#!cAseViv*?R#jܡ~]s"uvG`i+hzOyYȀ5ƊIGiAZw-Snr_E,n.v(=e!F>̲P)ϊ^rFм '0vOF8L)%!55|{a_ݵ |[P`a>mmM'n4' +>r;?~;㼭pbBI%3#R<nٖpaA=G.`qA ǘO}<ЎBּ. ~@lr95֜% 3-A5ױ_2J) +ԦfgRZ| 0V+19>y Jݭ\?cLn +]U5LH+W1@El[N֎̨_NFCk7-QQ7g_v~2ZAG$7$rQUGLbd\]xN wLeRop\,1Ba?cqcyrt?iJۮDifI8Qk9aGD +JLm.>Ar%Wq2ظabneBtƷlaP?x2y,+0)0 +ڧ<4'~muf[I+1mw<Rm+6#5j!qt?BX:<C>:rr_.9΅x7I[,Nqݓ&zM.+ZO\!<:+GH%RsyIv9TY.c r?pX>FX)KRbdXoq0 +Iu;MTz[It=ITڟ'mxTxꙘSN3G_0rJ[0}M?Ⓕfra&v̧O˭3//@JŶMEN5~IiJF[o 9,,F*T<fBhaEy#<vB'oKdz-*nK_'dբTJFߵ/"aE[AY8,VS3ٯjjlwdMNٕ4?r:@^Ho0v\iZR6 +뾁^!?_"eec(--ȍ}Q5ΑTGvQ.9س_O\N,S<*R;P>]Wa:j۴MWO~fH~Ё7H&ĥ.an/~v +`_$8Kmx +^UV +z0Ps ؊؇OYmx0BOd._َxQЩ:2
!+M&6hGe:I]'% O}"-Ui.NTa)0$h5OYI?)p(A[QW#5zS{8gMV>ҹz3!s|Hlbn%
H/:;qd6t44\אd@?"yF5q}P_ᢤe~*5{&: +;_Yλ_ >Qߺ|]w{SfjKxl˪yև<ya4l4xtX.(6!c{0 +|5Z5,?,`vQ@w%ɍ0O>/Dw9"Rf!OV5ኇ-!h(^ + ՚EvIs P}qYMbB(띎*A aR\[fû]+ +UH$z +n&9bզ _L8 +Ӫ:㯼-B ү҇茳Y4Ki笭.vfIiE_uK +9C߽OE+Tc[:N^**IDےJ-}Iz2`Y
&X:Z'=p#~,+,5y^SFDƣOy2hjVfDrp
êAe+`={EaWČg!Z§V&LK+UBs
+l럒'eO7,A+, 5Db葵ZGHes'5Klx[tnF˭ҰCpYk]@'P19/p7N|TUP'hfVF/a6vKMD6{t 0/au
h$#P!")L|zPܪ^BQv@=Ȭd +0(4[љBfدq{ +.˻aj/
C`k[VDCf"VP&d$aW2.`:bY.cf{mySnO9 +{@Ђ<v'{ħ^|=@Ut#z&KQiz!KwOv/b}<TE%Љu+& +vag bxja7aOJݴg76*KgŗOksK1 H
xtƦ^<"K7~FxX17nHvC$83a#Oc~-#ń14XҨ͠
!NNe!*k>Enל]5:֠M3OAyV!V%ON ~~5}n +=a_ ү20w:lHH8Ԧn2 +SQbqQO~tҰV UfLvVqU +DJEFl%:$H^# sYܞG1p('ef +@*AM-(hbb +H.&Kk| +dt/eqI*YKLf3z(0#D-}ԍk":||@M8 +WF`˱1<p2Lͯr8[K%SUܥ9ְ}o3UTuT*Kwk\d?7ıJ*䟈ql8n3RRCuDս!G`-V~rBX,ڏf#K/fϸCZdJpSj^lHz SA9L|vE^EN2_ z|aG6JXRfhfB=U)n&F<0R}۲ab n '
Nd$ݡ$ĂFG54y"? +i91Pު1:)j6"a=ufdC@0+`F {fT|#IWti#_Mgخҩ?,si!It-8RWa=]WP
]\!t)7W#Jʅ5?r?...H#jxEoѽ~s𗸅#5H[ճu)-0z3> HWf$@ޒ%۫u'< чm> &`Kde:ǸKL̡]$ +3{;Dܽ!%Dҿ +,-V-XU
֭ $'R:J +JX8| +*I)p7?|j@nEH"NbJ RbNȊxnd9Z0. kv)(G:pݧTcùn!Osi>SoS?A伝P̓B/Q*qa~^}<ZS%X|O=oY!M˲ynV +oL7?=IpMAm)<]e
b.f1ɥ"哘h94 +#
0Fl(⢐}L͞R߲i 5a\)GzS+#NKQ-pTep#L19'hQo{Grp%$q$lh0H,n1y]])]M +JXDK(%/9ofuIGZM_͝ASz%ly$Oo[]7)lCS80fT=ts dI1<{mO_.kb?pVj ó9쓕(兄ldXO!
E +wສ<!OY^cԪ2m5\%Z +&syfdWlX
t @+3զe?!P+Gyd+,Oo?r8~B8k
6褳u7@,74$GuR0 Ѯrm;0Soqpp8]adr2=|SL$.]qxra
_&V.OΟƗ{Crp$*U^Zn
ժe>X|-m_{xࡔ\&\|2(.NE<"9(mj᳧S]_7 +m9"cX\(ԡ|lACbwG٥;dܦSP%mdH9LHwhP(*UHzhSxX^z)ݮnH7Hi[e>C(61T6r
,wk*ǬgJw9 wi2KʃE!ռH>)H$Wz֖Q7)<UHۉ>ڜeyk#h(Am@4a dETUS뇭M^/,R{?p32{fQwr[m'Աpצo"Z瀓Fr!uL@v߹9ikqlfS/Zֆt؇{]KA1 &;)<q.پ +ZN2Ia- +@Ч_ƪ-N ++_ۗ&Epkmwr/8zE'*a"~;41ߪNx$KemIg}>ChA$4uMBQL1D"&ث]3K̫b.V+/<"* E,QdOl94aHDwBpmT+9WA=3
?AzUP
B}@3<_yI$S gYNB%$܋N/|d*d*2N=F~tWHKil`MuՖu=#̾AzxVSsU%6Dm6[=!WQDcJqobfA*(5T;XD~ўUb6wR=>ā%Ԫͱ$䓝21y\21IX()JP*y&Q}r31PphSδP w|8oy|_U}OCF Aa>N'{k>KC'$t&B't($B#ZyXt18Qj$FYM(_8¼<bj*nH63lduċ56y}ӯy~Pri)F#-qB<1ٴ/8ᨐ}hO '~ˋ]6D"pu< ƿ<"+q6bTŻE:[b̘|+%-+ U 5 5AJCAjJ:T T +!UT^5FՂ\zŽUFjSQ鈊-^ɬ"5Bj5C-HGɧ8(5Y=#Syg#@2)z{24""$DByPlR&E0@)c@iIB*&C!$SZ!",P(0$BL1A
!%K XbOB g`#RB:D9!~& ў!xJ*D01 #MP(vQ(Jv $VVCQk'g=4#i{}u@@/R
7lJܮ`G-% St"
k:!S6H?PgG%mA<E +ߙ&HI^dyxWxQ
#P9Ƹ(iԃbDbP4*U+uS.#*Թa +CfZ +jUNSjZ$ȇ0ll +wuNAiؖ(sCWz&%aHa=ejP + OtXY +BLߘdED4z@B +IszL +R;WC('**Y'O|Ґ+mi<_l$a>-\&bzF) L7Ͷd4JV'q»?FSU2Ԡ瑡0^4%O7OLG#u,Y]WhB ]ip}Zg+EmJ>١Ld6
yTujV]7#x*#35 +]d Q @i#҅dT*x355D6#2VL̉.Qpf&nv.TʆSLQ(ha2O3Y쭸FBBi`7ɷjpRejZ~(1bE-c(ɚ5C.&$oFB!h2f`~&#Dah D%/n\t'X¦XmYGD.C`E9RR1+&HߊxC12MS%Ab#44qF*DD3R-{$lrd]$(֜$8cU釣i8l)uZJ8ZJ<SCLHYfrn"H!*Rl`Yɘ.gf
9~J,BKJ\&> +/^AJTd-?} !(O?e Z*j*F|]ciWF!4],"e8aAHi9K !Bd-9@(EUf?+ ~^_\B34Ո0?C3BIT 0QSdZ(l6u;
a})%N9_N|'iqLCI48&F**L[J$DD"",/PTH,0B %!8pB9#0dUÍ,{M p@3hy}0%%vn&US[Տ_xOQQoAoTbqGa
K"F,ad,o3SL]',5^YXԃH椘תԹ|)ﱌE~v.1ٸ$ +ɩnSBocm؛Ꝓ"HTS3f4Q)B4g2^9hN=N!U1_Xw(TTyl5P*>FWOcT%tq.G/MSUPUUJ?{E[뇅Qھ-johg!;&պ4!_ժ(k&#;eNMi'㵟1F! +6OӌēR8QU *j<UHH,,/(Ilu}R$v,U,rf17-:BFGh3-*вGbAgCfQk/֨pBRG)iTjw\Bxs5:v%<R+Z2΅6&j}JW!XrU캌<\XqZ:),c~BqZEAC#RM6aJ8Y7ɮdj8> +snguy>=ἣ%$ѱ9We5gX\8(g)^8,ZRMt%ZF'=kaqf#σ1'͌~yd~И
hɉ%qàqI|܂j¨ +])"fJڽ(^HÒI(0$,%:,#""-$4!iHnۺ\Pc[Ae +2VM8zjSBu~TE.ST CvOC@2ӍR +WM++]T2gG!s-jDNňZM.OڐF|պF 3<1JjY+xnGDTsHXKhӒ%.UL6.CǼfQcY3ճMVKQ-q['Gӛi]cY}A2i妙vءq<c"W/UuiEUE%6&Fp=FbӈIZ͔멾$&0wpv|
z8LӘG2'tE$ZI䎝ƥ̥32x]٤~$k:RgT)3%P˂ F7$@m9v/7()//#D#n(GY;2]NǒjX38w|Q2-BYvC2n.샣+y>ļ]6K2>b4P^M<&Q[Y15eՕ7۬V*X#=ż8/0gG\IhEr7;ʪ)Dų:5+fվ:aNF*lJKkW1gj+!}t SZR,bCl:J4J Ɩ/Qg&2g*Bu{hB9^Jp-$+A +)jDeh8w<)؍0\\xA4Hxv9\&wp`HrqA&H-? y\N8OàG(ysg&hl|ƙNÌ#I*֜ `rRKɽ6D$,"(QR$R0K!JpjJ<9ﶃ'YxhwɁ6;̧S"LC2BFE1uP!Damrqaopg'éTҼ-@O+-@3v{v5d2Q_*h2J~YCP/f#;|,GE@Y bB\v0 BBWc4qSᬄS`ߩ&"p6[?$9%APqtR<Ahڧp_ r;p:{ +?g +JA"jN='730o4Dѓ +WDB[ 8,VƈH#Db#jB
(XE=FArI(I@G%45O 41pHi .D)A*B"DQ A +rDZBr
0dAZmh4LBD̓cwU&H)0C0PbR*i9pyQ:Q +RQA>l[Weɶн@` jM*BQFHf# + #Pxh+2#&0h -A vC7/4Ss`D&p0eJ5)w842N@Md&LV@q4(T"J:F0!ap.Y4Btq_*Ew
Q@=C5jBuQ
Zȁ.:ASACj:M;0a\..SQȯ@.BMY +9G(ST11TtfSQwGG˰2^iR
&Ò3 +DZjJBa^u"z=ԑ9|:D</0aΓH?|R$ j(*:P`UHlsI"M
KSUW,H` +b/Et6 *e +QFI L: +F2"!\iT͋E w0eX@R"r(6DPd^V_pCwX 5H\&babDMzh<L7Ԣ
jFXTEXuJwfQa\pheiRp wqq_]&H*P"/L(*: +7639d +&Q7p5кO$C,f@$Ь1Xvl"1xa3)ˁpAzۄe4ʲ\pou>3s +q7xd3k`5ł' +%x3IQ&\"?=?HG'Dx!pG)mxk$υV'ha{Qf-1U +0Dvp!#
|ӦDgVN,q[Lix,W>̂z@=)g¼R%:'rU*3BLnM,5?d2nYk rM؆_zM1yU9I8GD^Dʛ +шա#I +4ԵKEtL }cxOӢ&XɈ\B* +$!z1@ +dK +F]K&|&5nKږ|Ey^AAq&4?"ysY)a]iD=zFG,b=͊>]PjdکkīlEG<RDӟ#|ԌB:SI
I!p(oQ4-b2*v.U~!3⤘!Okd0Mpbh}M~J(o#JZR}v;`o*Ij%#C${u0r6x)pcxUHa7rA-N,C!g@ +a$c0k{Khl^<xeHfu/|FiaB!HBTiyeQT=? =r\,=2t%S+G0r"GF{^ݟj,3E7# +L=#ݞz%PX)_䦶ON7)4tcӕM@#\qCO3t._nu'KVsc*-]lSwjh7i?2sܬULKxb([_G;#MBHò:t,4SPfYnS{AY
xsdGD]v+ +A{9BL +!@6p$h~⼛rZo%3<S ͕6q .$h!4G +B6t$|i6;,GY&:ťưQ]Tf^1E2Nx99m_MSAB@Yq8Ѓ,ֻ +k?=(dj.<"M3
`4Jmsp]\}<yC[= +X#>'xa>dϡTQc1CnP +k/gbOؚY=|X)?7WFq{?_|QҺRONs)Tw&ҿ5$jtzR)l&*M5mNelސ0sޒwk$7H
ku!2D\``$M!>o`f)-ɤ}!tߜ +f-YiG6Tsa-ُt5F=}XbFXN2ڄFP%(v@BQSY7/N*OXH(cw~/Wx<1kq7<) +O9TaSf*8PJC1&055%jt<TE8,M +|SxwDA(:aê_F(Q +)N^`?Q^]/\
!6]8~g0if0jR,+8,PČdѰ܋ o3͎Qk[\T#6
{&&QJ +b!
GHэÎ%?.מ⠚1hoEeO + ^:tf
(R'Ah730c
FMq-Vh;N8$9:KR~FDphǩvML2<!܀"8ʫ"4uگ]k:Tpf&X=2Lr{@! #M^/ ǏQ{QفbiWQ-cF`Uv/ +Jm1Du?"( +)EBcTbΠbp&ӡNLHjA]on#AU0/|rDX#8T$$LuM +2zpnr1`gKXU +cwR$2یBH[(1d ++iFoQ+TF)~zRĘt${CJGܕ>ۊ^DNm&>@V'~m1˺XE*BhĻ|ao+CuTMVoxܜ|jE@m>UEw3nN^XjZP*ֶm~5'XHNtȽJ=bct7*h, +'NL|6lաVXFoDU[+c+k<w^EI+SP؇r~"a0urٱu{w +}] +D5?@N.*.;I}A1Ҳ[_^4C3DOŠXbK!ivٞ1A"| +v}oW(EuyR V;9x +B~m0CÞK덈n`hPq<A.R3a4r +႒Cj;`ma7sP;Z-j <B^ﵞN@N17B@ΨW{<5Ufy,0g<Q1_X`R!*{b ,yI$鱗SІ?Y5W֏8{*Kx =RTFb"A"D
j/dg +%pA!5]Rgwѣbcz?ZPl@~cWL"GhCKQF3Doz-6{Y4sI?WXI({GoԦr}2O1ZH?P +"'˦j4ʉdϛ39$6hjL8.
νh?P uKez8{`3XNԕʣELBqsg=˹vޏre*%3dk^Vk$Jtx{8uE;
e
ޯks(ғt1)?Ko1H:2חfjh-@梮549} +.jT6$Ycurf\mS7MĹp}aig`I9)h S-!c9DI'm[|b>2.k羬 'ΘWeTqC۟r^9N6IPQ`cP>čP\kPTYT\W/bvሣ6 0gL*UbpBCy@^Uы<84hVi;V3*h0d@yGx9z^vipݍ~va/Sh J);x_N7rQC۟WgEu9:diGzI +xܸCwK:΄3X:p +](S +Gyb2rUoYTs˝i'24i'P)b:=w1a餉:15xP MƺI{Op}A\}@Nv~ + =e +hăc#pZR!##hA.,DQ-oxH<&~3IMmH&69벉#FK NؤU☢qp%,|51w ɻLybbiX24 Y4YM +q&4q1Lpfb<v+҉ɤmx 19'}"PbhLZJї B_Gz(T-.) CI.00|:L-aגSZfg/ΒP,ُ@bILX*BG +GɶPbC@G+clL>g+H@ƻTDtd$#s7#6dp+8e<#/7҉ؽ4%n30Q53/4Fh9#؈9HܑFc$!
kҧOH§Ëa5s,wTk"7FY$khEظ0&GP0gK
R$ "FL(rnFOM$]O#QO"8=Q=p="K#,!HD2Dd +xǑ5ىwL>r<CZ/5B+Xj,tCrOڐB
)9C:]M1aGL`vhBvd\U!g݄px,/!|M#.#}/Bl? +Iz@0@;@ @q/H><muC"@-,):Q?)ȝ7X4*)ڄ̻=}NL'n#GءTSB.GW\!Q!ă.?nR;ԣHe? azû `QbIq}qp>j zԦw-kâv*ͿnǮh{hy.ꄴYAS/+I;GARYIH6zŖQp+<b$- QUyM>䑠 9v70IGUxH42x$7!/}Y#9#/C +q=! ĭ~vap +Y$ꀘ +A8LwMJGz;tV!Z
qkG?Gّ[sy嶊s0]6GV +#l0nF=.D5:ɰ`4`30"z#w|/N&Pu"N"rG_ +ߋoI +ÝqF'Ut^u7/ɥݐ`x1
H|.9.D v19I.¡ӅTtDFX'_\|Tft2\(o"D<ɸr!.v[ Nh$/>Г!MSPO^1T?!-$Y["Z!(!`"HpY +Xur[-4uueQ\`"IEFCa,Iu +9!#bZWPJz8 +AB#Awݘv>4"HŌꤶ\@;%I䂏63vb1#j,2AhDdLUk^˹QkryFp\.*j˗APeFBP`Ft9B+X.F1x<zIU%$.m?CrPu\k("zx9DC^d^y$zIkD<^t"//{kn_."DJCK>b:ZUB!q+*n<B&u3/ O& +
IA\a Ta 0$\c@Ye\ n&1%훘o3* EJ^ +͡@YT&Rv-&BNF +sNb+;jwe'[p*:,cZl笞, ɮN +V +"
++SVU`ܙZ*@ + %pG-w8
MaBBl|3 <UF0E!%Tw +YAAqމ +WΗ?A}A + $JB 9lHP-"ʐ +PVyπn<#nL8i7 ?Pە~!N2 +h:GJG
h^e7V0Ɇt7ZҨJx7
(LwC"7@G
]¶GĤ
p]K,3hLk&L
7D +mkF'%Er-VRMmu%
J # Y̶? +Yt`nfRݴ-s@"Hl L UQ"
a$/="vCp]geH +!
0jNŷH%e@Eyդǎ_?؋XB +@y,m㗦@(ta76 +:$6 +`gjq ?c9 zd0gUX4 +H6w
o⍨ZB;l(A`.' +cQ$LMc#-([iba<//~o;oC)Y}2avL +vn +DyQx3J:k62#K 9|mISyL<aQ +oܰ뀊-\YAu +YuwxѯN5ưjR(Bzο#s^v!wͿ*Vz$1tMYD +~ eggg}CMį]DMVCTO\AڷAtH} +k=ŗ>1";((dhW4HQ-"eTמU2`~+PY!À)<ۓoԲu"K^ɓPcO0ڷ]bV[!4: +"ET8p U5n,/9mss/P3<B`D',XvDH*ZXl%l2@_j.ϟq<J$ +- +Og0:|C tD'UAYjQ0$|7F&dh%,j*sAm/8J/%3o.#r;TE +H5K0ii +]F{w=~e,%m,{}nBy/>qm%Әƙ"V|/` +~Q#d==zx@.94"sO4KŽ&7K0)_^Zt~dʽABo?v&g_CT)Zl뮍3[
-G[=S$C'6ڝ`40E~%m,YT)ZZ*C;Ib*"`fCE<< D +&.GT[Tn7k=@e6X(B^ +̢B_/%\ɛY^B_qՌ;ntEaX1T)^Հ{3ܓ$He*TALQ/Y;[Sq/wRX:ż,Q)(m}TOŹh`>PPv@/Շܾ` +LkW4k@{+EgPXKQ0<{acmy)Gn +'ξKiuu(Rq}`v]طQ_6M-JCX'ɔQR5ou2 +=ρLjnGwYZ7rR9PDx:/joYw.3a/@mBW@]UNG + +Ԁto[$%,o#juuWLo?p̠~:ټ5ӠS3#ZuNױnPϲ-XM.Nf`Ho+w/K4bjꞽUzZ4LJ +9RTzZI;pP^gW73^=ISS!A6oݬMT!$C40zzE;QO/"z3_qsO&{ +`W-^ +െSIVHGC.$MިsSA^YDUp=%>!w{?q'fM[x9'Oݎd%Їy?tlԗeԹ6vBn~z +{CEQΠRάAFl@U??TZ;=?Ӎ}NGL[ZqϕڐڰyQ# +\z3<Iϰw^s;݆|1rVu$] +3{HhQG?9#_"[`擼XCn +I6[d;<6Eݚgy͎`]Ra&6L&b%ͽ2wp@_[/(]dˑeKjs3GVFHJ.sꏰɃW4t_JKR@KBЁrՍypg~ԋ0'$Fr;/җ_~v08
1>O/G~,"PIYۘcraߗfg`N#8_Si+X|_چH߄0wHhM¥=9&9O +s_ Gm*J"; T.'bBb-<!ހ> +<@26pk +aK+Ї@n1XS)<\̝h0oXs5ƕvl0%{U:4<H rȒ1GOs/cP!^_Xks6l6Kd}@e+T{/\طc]brMY&
0oG* +r10`y܊Z-q,?殽@_Ik2 +j_+ +],Jt2VWqOe%WYDSK{%ywۈH&;/ZͼTfJܟ<x;Id}asm?9]d(3O}[r˟ӬT2Z<RO C10u#6x/WK9}苃ٶ$r+$9PLrnk +1ZZRAN`.(!&f7hIKhks)$ ++b
+9θ(̐#p<4aLn +endstream
endobj
19 0 obj
<</Length 65536>>stream
+"_Pz~~oj#NR6⧓cvғDzAJkrp֍B^lɻ*w)v-y+5q+g +qWC
{SuqzˊpR>l0mfM)>z⡊t<72CTo:f %|A`iG#I$\3eGfܔ3!NY5邞evrw3/Nt*{0ʑve.N3ib+!8,\<8-Cޠ5^љdQؼdknj3zQe,41m8mު{%ً96{!BuF2eFs'UJTT6/eI
[LRD~SJ=q.}pl7&KHw/P9h +<oA}k2b +fnÙ4?M;gF6dN\N0Vb ̈ bgt}}y*v_|Y61v +{0x`¾pp]B`/qK`rڶ`Bn8jd46:չlq>HR/婮k-GC6׆1
^(F6yz9 +V=#PWl3:m~JRw=2رSmHD]lCug&\/qu=jIDz=&BST[s^4UWW[;B!Hzּn\pi+7$Rn9(1<3vf]\S@_|sKMMx)s4ֿ\1ա(?;eEqŽ{d[aRXnʞ ^(pA׀T YPg?X[qzxuqzeN%}6uߵ{JJv0$&Ws?~V +;}o/EZZj\
Y~ +Ma,mt@y)bK(#{uTlx_k$̡xO#`KcWƒ#ԏq#~;e (11_UpYc+XO!:!PФPMto]:^e=0?nԈVLuH清25GIWw8
[VuU0zO0{ +jU<WJnAq)3}/TY15NLbE`viai +i(T89dnUmܐQY07SKQ}N4 +(Zn*:MUŁP1g,9HwCE?g +p +k +8V%m!ʌ%o3o[e?UY<y rC45F`Q9d$b+i@NW}]C>Gv5Z8܅ +5+Ʋ6nmaiR+AbcO0вj,Cc7t2ce3.%GVېd
l5OeNm\d-;d^k=l>տ6f28^*NfD8C
n5̆=͝/ZS<HӉS)-i2{OCkɩUbګV7Z;viԌA#@M$9Ml;-F-U00*VkͿ-ԪUT +n- ۀ0!Z?0D6'߷B,o/ +'R˶p_P-|[4 nk9,k[w83@ނ 3P +r!ܸ^ O:m!遼~(bp,sAi4ƠM@}h9`}J,eاz?rbʏ]ҔB:?&^嫰&cy#?_p +nX5cdq˵<Qra[:<Wc56 =G{O3=nl8Uf+xߠ;ܧGϮ.-NSᎁwlwbbqnq\<dv,CC;QzN8M5ImJ`"Aܱ?Ezx+UZ"k@;gQ +_xJByյ5>E/dir1dQ(H3dABBT!-~_KQUC'U
Yf ++Q6$i>IʤfUȰUEB$LHs}"c
01Qr\=</^a03hk8g&"$V#˖<;Lфޮjdƈq(и( +J
u`6Dتv]EX|>~V{qh~$p)}of7
@f^nUePNG$ޡ2"fxl+aO\ +vVרXը^>)GTBKZxD@ C":N_ܬC +c +lsFwWsF 7<߶rK!TCV3
h3!O_I&+bA["!hnE7+b͡DRA\Cc=_j7/"<}9˚umEFa`8pX5ֳDqל\ .^`G07oEIW컀TpDw5L'ɴtۯ{Q9{zWn[uoTW_#p;6p6zx%Kzw1<n x~EH&Lh +i]@+CJ~dE\>|JAnNTuB˄;ZHÁ\Lcd"L?\OTG +W0rKMFRdx@EqfFG9jÕ_[/iYlq#xoϋ+\M=6 P@O_0w:4|Z?'&>8LzA* +D'+$'!s%՜x +#Jq1x2ī|SgڏV}+Ň )8M.R0SstnEh!}$b_|B=htF/8A#|$wS5;QF~o3B&9<ʡ,Cʱ[MҢYuR_}0Ga +&I ++XKK0^\Vв3ؠzJ{ܩQ)7w;dq}b +҇V}^E;ZO=>M0z4랩vgSX];Nz7H{5{myw4wZhd?#4x4X44]
?W9~/D'nj*^(1qPoג/g<~>#!ȗӋ<>¹Q/O<9GEI'.qLË`PwS/XӼ<7o0Y;{~f%D@jCRU>?6蚣78%}-*>s]_lgST?tfIR:C֓o^K>T?JHf&b$Q/o0 +={&a%4ˉ{Rqc~u}?%Nࣃ*r!Č/Kp#p"?'?%
??fuƺ/*FmCzio3>i/]{Be*_A{bkT2w>>8?.(&s=AUY&)?'>yY~M^d4x&CEo?K)u\<80M;̟<靲9?%@'ʅ~0`G`ByI
\ 1ӅDq !Gq732O&|P/%~7~~ +ב0ec}8>qm@F +W<2_j2!'4CPք03~L 8$t&Y9^Z#[%?!UkO9֧n l܀I5Xm'i48dj=MQqRAlGdpE(s'!ǸI7[j̜]R{ΏCSG*X& ڤ|LLoӳеN C
,J#sƑ|88DbP$_h_svH4G|GdbH,[LHSC:;/*hLVVYYr;),ORP!P65.l
1\/ZڱOTݢAe%х)&t/] (Khʩ)FQ0bҤ-xb7 !Iʫ)F1BSx|˄YO*<|gQiؗX/<ԯeYS +W%<>,@=w +MQǺDu"dőA9jt_ҦOWӧ=OV~R3J}K +ީ$̃ J>' QMD
Ε02LJlN]$Hw))QZ9;Эjt7 +<NgАe7Zo_\81vI#˾Ͳ̟y(WGO;~L`64oGQ´m뾍]JHSVE>Iثh\^RLi +TL'89#}UŎCrUJ2yl540ug3LYchg³Pѥrw|Q&$9w^\5X&7AE6aAԳqw]o[}"hb9CyP>|{ׄ*dpNLE:vM }?$*xNo(śIKbk5X{ J@9{:G|'g|_ێ8YԳ?2~J^$cԺټu;
87̧C +BH=Ϣ-çF9boYe +E91|jt}2~l4v9ysVs9Ҷc<B9v`5s="jN0ƪY{E97(Q\8@C:F#)jwZM>MdixUl'+& OYǮdzhY}O@e(ÓV!G}hZ''2Y} 7V_!l2l4P^k;&v,mý_7eAPqeD8$q2_L[uylA651٭\hIT{mvDaϣA Izh#Xq|8g"+@ٝ@(vO`\uE#7)hBچpuC+˾-mNp_7ão"+?)cQ38AyO$_4m>!y}=Ǒ堟d/v9&M4qߛ ؛P6*ؾ Y8y}e8v3KŐ@4v#;AG,Wi/Kj_8RL7iR1ٯXdv%QYSCw
L](+VQC($s"u#3~4} _[-F NB,2LflJ^5'~9CwO#QC<6˔V݂-2a~e79о12~l3_bAIO`R:ŞvAFg5(Y#_ $zh;2)4N +ڀ*"N-φzel' +K=}9M[ވ:THK(wZɎ/!ɕ8X]Q^pϦsjUN6PM_j
~͎: oǼ1}s(i +K ţm~
ܯ9^hĨ +B@" +@]IYSRJ/P}$:^\ㅣL=S+b=Gh\2
&RuDi?R! +F8D;xQ&ᝨw0tf3]w1\<ygݽ6q5×9:'WDyL. 6^Tad?5&߀pa7`P}8sXm +<_\[af&~ˡuxrZb`Z;6}Aߠ%Sj&(^h F0HCKFf +"-!.XZ+}%sOi1zl3'aǺaٷxt +N@!?C'7߹(
ՌsʭEu$uҡI#`uMMW<us T"B{2&&m"K鵗DßQ_Ik(7tϭQuy[#9_<{Fúh/zH7S)
x3~#>6؝mwj,(i ELeoϺ}-n^\]Miر` Bf!QwpIxwReY22{̮D +F7)>{vƮ;3}puL lc旹/}9vkp,fMdkj]MSVݲ/f[2ns^l)dg +~P8Zύq\vGt9X4użnS8k<[a̫D
?}6YM).nUsx^G{$j$Rp4F@mvȿ> '$6fg*EZ;tRq8_;oS8ch$g#V:vG/"(Y=|_G|sv1QDߧ|oA:x$JA/d96?R_MᯠģwZU?vߜͣg;*+5v#ߟk/ogVN]Aq@>|yyϭ&Mbt*S)&^/r˻1IòG@Z+`؉@ +TDY980*.TH?dx|NbC?tIZ}u$?9oHm~wH;y'1/qhB#/4H`W2j4MaW0yGuz_sw>GW0MA*LΫkjE<(laѶI+ ٗLI=z>۟^TGt*Dq"Pen²VpGpQ!}juz ʿP!MI6?f74J`47N}N#A;y_r3"M"A<zhNFy̻6jm Ula?}6i,BsBgQ;uo-ga~Ba~?FE7PQqo9;H~Be< 6cFsY}79e6[T:>ХG<HfMoZk +z̞L(~%R,1lrL#{j"B_9q[fPgz7w}Ori +&OwI@UN(x:N{)ӫO=N_{]~jI_ +HDz& TMI&c,uxO}#O4x?*~VFH<~Ӹ2 K@o^у8u6ާ1wmM aFvF{ʄgP~Je<vvJUH8#B +D
Ś=4@~6_\t>|?kyNm|drU`.?0@~N8y@9G>4:ϲ}-6_7[gglg1ɽӈeho8b'W@uD;/.|O _CW2ltv.ܱ3.ƕ[i +̟[Sn77vscfsyC>k萍0vh4r +۾/$8C6a^ms(k|Lg6u嘻59FSuz;[th +.MĻig.kzwд:
Ayh +2~ps\A̻#O[(28
m&}$ZhUl\u8.d9@]#KC3EsHwxl6a̶Y8/`r&1e[eY#{(dD]ҴX +w +vûb}hn4%`={"mj؛XҨ{no5o(S~b]>5.Nw$mhgj%o]θlWG|g=9fsefF=C_demv+>8/V3|lF.Ϊ}٥;s]L o +h=g :⺮^{(OIh/~KcxkM!6t^g3~o*vQMm~A0xi3x&>7(kYh+}~Ng;zw3~puaWv$A7ηΖl]z/z7wЍκ2Šoŷ4̬,L;fmqufڰ@18
N~C+cfn26p2x^aqŲx]1YwW&[qe +۸3m!卫?k/`>LKX214y,;dhM沶x_ޠfCmåU +KK+k +늮 +늎ʊkJnj* +jkk*j++ +Kk*jjꊊꊋˊJJkN*ʊʪʪjk*+jk+˪*˪*JJJ+֖Vה]VTW*J+kkkk.kj몋kkoqUUiquqQY]que]qe]qUuaqu]]quaqmaquiqqaqUaIuqeuiqQuuMiiqiqqua]i]quaqqquqqquUMuuqMuqaMuuq]]eiYqQumuIu]YMqquauaUMuqqIuiMmqmqemMiqQQqeqequqma]qeaMUqUqUqMmqmuuMqqm]mQMquMqqmueMqqmmMmmmmmmmmaYMqmiaeYmimMqqeUMemuYaemaem]YMeemmeUqmQemUaIaamMamYieamq¢ʺ⢺ڲ +p_83܆p^ax0<]5<pc:3-=}^7dоx[pPhG!5qAn< +PH<We! <12qG5 +g?܈p$.ė΄0<cYxШ + K@'$.D2+$҆frX=LҹGꧢSQGX$|%a +bhl]b)d3*OG!8gf^z$0c# +a1t\\bքQE2+N$yI:7nwnz6$bH"˙dZ`)[!W Y[K@%;2 I4,"spK@%8,`<Q;SLiSdID*OI,[ øX-ZRHXn")HTdSēv\ke += +$S܃Ӓ2H1#'HREJ||#?l'7""]X(>M1=`|z{$2#EfDB` = D,*-!DJ.mmr7>=":+șZe +k9Ư?.v]!AJ9@R9CN7?RdaxĆe JrX.a eDLpTzf6 A
79rs0emicRJ#:Ur3(0 +NiRkrv#K +ъ2,8ʔdrI'jzʫ +7!(~j.LEE$n5POk(9wxbUm8&0l<(?)=jB+MjNU8{XIs;0`, +dccq">="RRLH_ܕ2q + ++j9/ol14Q]'GDA=]!.ȸ7Y쇮'F>5fJR%f2!y{$1].5u 't4!Ia786f`d״ +HzQ-;KwҐ C +$#h6UrGe)R_TIeY`Z^ QL%VԳ`HB; +ۆRNI~ +```2%`DnKb +Wn9&UATmWPW[UN
QP?ԟò'(fH,QZ&Dcx`UXXI^ىWRx*&]9n}!Չa^Ҵ$ J + cZQllW2.k,BJk݁kR⬏3!6XC>C@6:Y +k
DcJSr:kऩjT^TReGLgCV|2m&'o¢oi(%zs!j1 +BUځYҙ+'%c֪Xf>zgEQ3?cxBg$geLVm +NHk/*/.B@$[kDVĄݑݹ$1l;kqA]
atsXpt<+BhԌQxj ۴)pF@V`- +_;k'(j7&0l:)9^߬ +'\ WPrWk[<>g.!2""2"s$r&4%~,ke+ĢZ>8/.'=A_'(@utC/9_PX r+)K=~IQ'0AD`t`tZYq9Di_SPpdvEHgU/Hh
\ò5QGϯ=E h3% +ƤG@# I+~%7t'E<<{*-E]Rѿhx{t6f3hbH>W0MDZ8\BW:8)"k! "I dobEb!6_J=
~ >ziGh:yѹC>A@:cĊ<(5*s)Ę&lu 3݂+.R3~k◊!YcȤxO!i- Nzj%%*XVE$Tq9Wᨤv|r +LHM%\
RXxO?I4 +Lp +EgrR+({R*'"EؙTU3$}Q+,"3Ҫ*[h*_hJk褗NO03@1ٳppX10{5yzjhY88gމu4 ,TIa Dioj>UbOEKR($}ˏ23l8J`6ՊJģ__?4X;=Dg5#g|`A`MP mJŤãMI}Z;+W&U_BFHZaA`ܝhZxzPz nf,/{;,<یTjH7G|缠[68#C +2zH?h~S&.T)RQYO<4~$OMIW@" +D +PLeS?J_B1'XF5btR#*pU?+u$pW@"30!H$HfqN L`˅tnb/hp[9>(9b:a +ɿny&%֍>AI)U$zJ_mN/͠[\1yk2:0Ǎ3+b[e'UFSP_r
U5E7#}$j轆vjxҏ#~E6O"',^5o0lɿTşãĺ4 w"_AI{/P<4|(=fG5qOكwwݛ:vIZ~s8`|2[hrJsF<zF4v$P CJIˊ
hRaq(0ngQ/}K:ÒO!J1i UFejNkŲl5)'zk$Sîcetfs"XS`YG8"J{Ś~9^CJ;
κwRMJßl4A*YkQ\Rh؆jeX#$^A5C7'.(\'i)7`IY +z]Q6tiu%UڡIge)(9l`EV~5s[K9dK±;P'0{{PdwC(Ov#ދ~އp'q8-m#>dɗTn"~B]<]%OD[ D0U-2U:Jd? +8ƻQ- +mY]gl,u(>fmc,]rVܩmsh<ǒ
=7ZwZIAP7:o+)H[)`=k
YPu`LP)k*$2ďDj\&
H<H)M)mִ[2!Xmݗkk!݂6K Dg +EDDDLO7jhCXJC@R*C`kqwmyNaɪ!<QQV12k'5V"^_Ȥxx$D<G# +CVUU?DM+u U>H2|n5鷻ewP_u'U7J?f.淬}y3n(/#[G|a,f:q϶jqDTI7^=sf +JNgRZ#BwPDTr:UYF$CQ!ǫkGg +M^$}*$UobL,v GB4VZ±Q05$T Ejo~'SF[hks(y%2X^?6~TE)4LDYhՂZaJ(rC}XfpV/0;%Nb?f|ChqO'Wܵԩ/qhLZMmOc-tץ!||i04mW0uj3Ŭ]jm hx,"T..k]Dm)~fzeH +5euSJX4مug` 9e7r2L6Fu9vTe*%h1+%d RVN#&̙*Ʀ dULYAI'ү C`-r`9lKA,)7i4LiJպhC>z("az9=Vƻ\mZ}鵫\Hx~<H䞝]|ցsWz.8NFy5%[XN˶1F͐fړ*\d O$"Wr\/Z1+"hI +#QG@DJeOo?X)y_[,C +I|db:_=Z5:lrjsckN8߀ǼbF418-{ +z[-Fe5eUuĔ~ + jf\LuMľHgȲJ8<AbZ$Pe3PY IHHrٔMW5~tNA;g϶2~ks
M{㽣u dhI$ +`[?6OLF0n+#5i_Ypm'cbc[ HAv_Au1Cހ_\zD: +Y>q!R⺭±{&ʿK?}fx^KVBBiC>kY@pyz +LBkI@g$/g0P`m<$*8@P*g!Q9m?Y²q3ٍ7(pB50r+!e0Qe_P1Vel2pNBErX&%'*~UM9;ge~3,* wƥmBVP+mB<λwyb]λ9f07`E]θcYca8OÃό.6KROuY#^0:Cp˱%dAZOdY8#(!9wRB@.'[/eUNfP@d-#Fʺ/UI]aj`IXƾdH@K⚨fr]-TJ@r)+6Pd_.Φ[Ŭq~i)\Ǿw9(^q37fPMųŠ^Hn3Seh0'VaHaX8ž02HtS0Vb[IFH_Y'yVXvΉ
dG+$`@ւZVvFr3)7dY>hxRPC(>25A(KK7`qKDxIȉAL9jquwP&a9"-ޥE͓XqD?dWN>,*.T~8cEcC}ewQ1*Xв +ڬ1
8{vReqqQBh&E֎qE
PnYHЃ<xt!qAC2^kvB8Tn
XSb̊1~qgq~"P/ʹHGhR*?8b
q!H +F7:Gia7i_l.=#7xj +|IAϰ.NMLkׁ%>Q6!68 X8 +A +2*c j\jj1h s~t9HCsN- +$O\ނE`8r4-0BO+VYR3P(x5NAKP7^o, +
Ӝ[VƷ4'<;(W{5Aoea_:[:&ld*$qcʀ@ɼ q
W +>6F +gs/@m֏OVYăuGbtwѥAPRib'=fn1dqlxrP㟶P pAyy
<+LTP^&wxnˎ +n&[H`_!DZY8(
0raGc8UqliQ\/VgRZ/>p%hq-a1՞t4?ńBYqu& +Apd0ibk7(X$+l'.;8PA';&ç7f76866!&x7DKMycK7D 51
C(lN4Ha<C J'-ءSijxOH/;܇1$*wX:VE d%Mq#o$A#yeFLZ2Fe1,۾9눨)#<p?
~` dUt,L&q>267R68U'!0AG8pJݍ@F7^,
Qc~LBȒaqģv/<)爓Y1lj6hʹap:IuW),A|x3na +$'(`@oLE60k"x?f8qƖ9Y䫉(3ăf1:||]x9Vam, +@ += L8ʗո$ +A+nEW8^,j- q +DCk(7 F#cR>Myy8=y9ĻтSQGhgr'$aG2 { dq G*H[T"v0cPaN,&Y6@bd6q׀FǣG)e8GqR<l>Ճďf!PzWB?`3
yBӫEa9Xt:Rj.ɣdMqGn| +F@4ne
Dܔ;_Q +NE|SRb pO>t`ldfGQC!RLC"AB#SD
0 APLK +xMo+%.dÜ;C\(Á:dT_eR:$K,D,kFN0
!#6%iXRKc!0Vbx#[mR<g9qo'>Wۦ8;`į ބěn~"T3ą@4
4C&ޠiL7k&!$8>C}:ވa#56qi#,YC062`ǮF/%.','%@q\6%q"f+Q5C)wpx@\exzqYc_E:9l| +yi!N^-8} #S2#&fqe)W1 TBȾPspH'nXi%3+#.TĽV +pNDYK/@<eы/d7,x0>bq!R$OL<A5<ȕC'E69xo(`OW$nncĴ=*DSPBbb
;%t
p +cKD\"ⳁ#q9,
+'E'6g|֨ t {\JbXTDĭpTg0ã`RL?py
9|3k^vA*|z{=-ȕ,` VV<y@QM$5 '#&8m|Z
n,e,j_r^BF +GW +*83 +2qYT4-. _:N1=~i8
y/3|dK/<s^k8qY6/_Zc +ad2Ki)ȣrlF'2:<PzwD{E ?0kS!0Lq1ӌP%˳61>6mc-b=3H<d{WNjM^384Rlor2Lđʙ
O#F8=4,(]E+RXq '&pcww89/\si
a"\!@7X &%_"KG6 l}"SˣDa`#@)$Z9)D|iCf<\7:X17plm~~h"6>=oZBD/)Π:|>i8r9Y9s9w0\^qxYg
<܇(gAlLEC7ω
K@&4<;( +Ȥbd(";V<bcxwbba?2~Kb(yrwGPhSev_?6~ ?;ug:
u} I@Bz&OD>E_0"Ҷ!9w];.5u=B8z&R0pi4e\6sFDDyG%TDuDLߛGwx_ "CF0ot0pcOpV*MX6:e-rTʙ)5u~ѨqRȤtLb/&1B5zgQozU*44cg2MD~HSUMRDy6E +#OCɾN94 2 +IU +bd~8w_GO1;xH' +ģL [@6:i
ZlY3>gWFmY#EI xs)[]^lRQY +=b[R+-GhcJq{ KA~?&/9>B҃AJs&t:yC@,L;)>m+a34X2,=7P+G0B}@4kjAoNH
XL9:fqꜰ^Y>8)XTE +K Y<
03|m{-άWrZw$%NPk&({Re F0L?f@EϢqft H{g +DG`TmNĠIAcWR'@MR'(5y:\g +r#l>aa1tmtg=n:wVȾ $uCt +iE3joP5PA|z(¯TmⲖQ.
?O]zI߅cSЬy[-F|%TNu^PBGxB۪ťrqys#dzh3@!|X
PDڠfJw6(6ULkGjQIh]@~G
;iNiu@Lξu2-ً- yż>i +j"NGP$({&
*ZgT]Ҵe$K53nL"drq:zQp<dgiE_ȅÓpzّ:
o6.8v +H4T)$ƟY~PEVlLf0ԩ4|pY~%o0 %,*IɔІ$tAcܴ3m3;.z +JVZ^2&?L`ځ+09!H].̜ZgCӋYXdv(m KL>Fg+3^\J(b*k%z<@kCU +zL$ΰ݄*<thsqTlL\
Cg6Z4gqzaBtk5s] ILVW$m +H.4\B{vA8wCb{2WpBuz59goe +W}:CX D8,Sh
:g +L4~!JAK;˓wz0tj8`èL}1xk\y%Mڛ3gٸ2?7R#3q߉6EBm쇙Q40XR3ƻg|j#CfO:-<}(]-}9u VI=4pxgCy@bŰJ]B6"?:f?cd5XqÐI7vv[uk"M/"wHL"A!MAB@&$#4Yz%(XVʅfsQ%YY3* ʿ,G^_#8a=LBȼguk::N/ow]3^$(tvReH`;{&!B;WRn&4qt_fol5{m93&L[ǐ@}>fc +Y48i)$}.%Vq$b1z 흁CMIÔԣKdoX꿈~}IüVD\tXmNL#=Ckݺ'_2EK4)4g<7KWkgLJ$vRJ`}!JA;Q ɔV݂5$1~k.$(}dՌljFD؋vqƣE7W;6~ G[,(̉5|]Z bZw8Rڅ +
pPS1,g[@h`_}1b)(YxJ<fLP(*s'DDZcs$U@Ĵ*ZIbBL6!^p<:e>uȦ0rh-5`dfZE2m3CS\R'(;%a6un"gްdUDVB{4nomjîӪ?~>|ğ#/vg?-#e~@dt:;o>:nmnB
/qiWV{yBaJr#,u 6хBVրϣ_3rUR<F]E<yhS`DB0t`ûsh.N=tw+D~]g3msR)x
+jFqXF.mrqYk bjO02Z}~ǻסVT)"#OF0o5pȺZF +Dbed>m]ZMnay,hPBzFl$Ew̉n)}u6=O$'4YW6%'8:>KY;0.Oi5##j{ 9RT5s+!I!BSzC[QŚ'OSRQYG8ʝ +MDTGhaTꭳrpNk69Kwo2쥇$tr!ك4zߚVfM9mj+vZ?8B]J
*?f.Gg:k]8@g&$=Tl]~o'(;3OIþЃYa1{m7`Q+!@88Ç&uB{fԩ4\֕h].wM(y>AfPsXɵ$u>v>u۰ݽՁ6
'?v%F할rq +T\vDL#= +d'<L&l_l,nMDϲ}.dYGv +H\/shd.i1kIu,-n!cbָ7s`e58&Q5pagWƹ vWrQ KPe1',JGieÓ~ +(HhYy6ELG?;q~q2
=iy _A +u$T(FbܸD<Dn9L@tƅKXqR8B(5s]cWSHDJ~D" Um&hOy'gj]nwh鋛,%T?}&,wX5&/Vs216F\ڸpxO#k~@d^h +F!ʭҡɝʽö.2"*)q[x}MǢ]r}^mp7NG@Vؔx\@"?:zW& afĸ:xYg +Vx9q_θYVưN>AG`r5Xg-xvN> "PeU~TN +E8nsHwzR*~tay +)&z+stt @4v
MTNb¶;⾺p|_д63.%971T)<IVL@uOVs87$8uǒ{(f#ѯ,IHQv!MB:hS& +%Z/WB=JdIo!^WX`X>]2_qK2
ֈCESgwB<x~
U;繙L*`pY#uJ5:X;:
SZ +SLiH:.%^
a1MJ|W@X><DV+Qe@:t!{4!͠bSF_CT@R
VD?n|U-8i?JnpnP4nE +eWRD~ADeBBNMg)Y +@]s^J
w$P7y:a8 +_g +! +$Ϫs>>k5Qnyþ"^r䝨FYfM
{v;Us:CdSE=t!2`K.[pKX&FƫUى'Vxܴ8U6+˾16l0o#W,ot8bGs^a ^\_Tk
7j:DƇ,yi$}öuq'?hi5O-\rm9M0[moJ'j8\fCܞ;{P6xُG-rF'},\KrFg-4t;]>/Az?HW_v+|y&ώIa^xc$AW<k-U=~{mA+2MCuiOB{F\Wi?>]JߚK#aYoxn{$$tJ"\s]k1} 'D;2X Hڛ9mi^ /0n|?͝fgnF~ts_ܐe%e_XBdD')Ikk{N[>Ȓ iR$w?.h\' -##apA+Ӑd[ᅲ@AN|2fnw!:)+<ی!8g8*]f7hJt_Bv sٵH]C'/e0Glae_}voIid|àNK<٢'HAo +* +T00aoNx]8ab }TfFyuΘ9{+w_{wskb*{8pCc.ڏräxhcO|`V|HA:JB lGcjŎ:I-FI=Dkek@)R0rS#[ +ؐ-ì${ +=2+LX̬/לA[2s]ӏ;mk_/@yG;tJ#[n<B.\%UPN^+sj'cXkﱂsWleCEݺI;܃M?n_yC55+\m.QL"=gcPrvJ*|Ky
O!4vo$S/[]&Nwω.t;~YkXB_==xFi{p`1{ 1%)3\IFsLE l{
JC{. +|$U"f|+heiҚ܌{S8mkg~f|;
$~zfDžj;7j33A7_ξoA㸉BC]<j!]9n|־3YK-Bp?3wgjUGߏgFCYt EH/R}G0r9뱧mgTM>_w!=Y$\;h}0@gQcCHU9G*Izɷ7 m@>=Yaݍw$[\_vMu.\q3uMWվAg~EWtcj.T +hHD$o/5//Hy ؔ`P3 5ԷpB`Y]Izd(pvQgfоt5eEG/g~n<<N%A?&[Nt^VՃk^dx:U_^}İmc̯xNㆋQnx>Q
j&G8-?H,-E3îFRpe»Y5^α_y2m {ۥ,hI"yvz$}Y3\-[ϡ5<"xX?*|I[wٗ<R Mz bab[ +0
r ;NbX쥚І7y@0lo8,>¢ǀ b!=l +n[k6hm_ +N+ۊFgFCYtub&I6!p<űMg +<
l/
DAuh]3Xn߀_Tq?FZxZ +ެyEHgf\Z1Lt5D˛Boм(Bo\o{\]>FQ1g:1J}`\4QL2mQXN-BS57y>2 +7e0"#0:t5CLD'4_" ^Qo]_EB +9ddc5886a-c538-41c3-ae1d-8525756308776b6ff790-d41a-4296-8b8e-6559d94101aa62 628520aa5d7-08a3-4aff-a4c1-3a0e06e82b3951cf172b-1249-458b-8791-38fd8b4edcc63546125237-. 1!"<|%
0aQ0x,Z:CAهڐ!F]wC6#6#.3}Rzpx>y2)kL(5ހ%67(xNNN +/ :
+/XMLNode; (xmlnode-attribute/Arrachildre2nodetyp(0%valuynam; (yofAI__1idid10hxxw,turbresul2numOctavesturbulencenoStitchsTil0.0baseFrequenc1feTinoperatorinSourceGraphiComposit1/Def ;44fractalNois1-2AI_BevelShadow4xxstdDevibluGaussianB2(offsetddxx1O5surface2(specOulighting-color:whstyl10pecularExponenConsta--5xx2zz1PointLeS2kkarithmetkk1litPai44k312MergeNod-CoolBreez4-511dilaa1.radiuin1Morphologbbnnbnn-b52b32sAyChannelSelec2(Rxx1DisplacementMap1b4nnmatriM5542(ffilllineacalcMnonaccumutotoreddit1from5dalwayrestar0begN1anim1cnn-cnnc32cc81cccccc12nn1bAI_D_23166Eroder366_2(1_PixelPlay50 5R2(1 1;20 15;200 200; 15 20;1 1 remospliindefinrepeatD12cnn1k12;20 20;yellowdiffu;green;blue;indigo;violet;red;oran56elev18azimuDiD15redl101331012redxx1211-1yy213xx688ta20.1nn1108544-Woodgra5xxddonnfloodblack; opacity:FloosCnn2(135100Gray4O-xxCompBlurT1.CompXferFirtab2(2V㋞ +a0 +PrYҐW28=N/m{x%PBN[DXi9#VJN`*ݚA<w#$*c2@%B析%u`y,8c#B*t)rJK1=6&Vc>JV?R+>}rZi
b2I[-9`([oI|ƞ#,jcH`W|נ2hA46%piL@&
ԡP鹉xT/%'lkiHCFj%%1 g'6HPt I +UnWĦIS,19^/SL6扊. wecB,+B^k +18$ͦ|w*\kxlPZ>-c+~@#g.;e + +E:+aRq3zVYyFN{5#5[*"Q_ _$X-VJL +^6 +o@Fw0Gma:lC=ҥ"NA^&QF!4VI(U Ө2 +5ᇴ%Ie`0(cQO45пa\ID&jo4^hf?2BBvؔ1cԅR,!NcBG^÷\.1Kz
2(kR!c̽?CR`H`듡A6 +u$~z;S8wmsZun4MHa;0<5*b5m i+.duX숅YHZy+؟V\Ͽ_ثD#\n;ͩ$/7tq8^0ii0tg{5/,m'tTLp+GV%PSDUƬPX15uIA`G}GV-U'##_erE +>9]JcHv]cHKֳ6F Zlpbɒ-eيG3N2Ծ|4K+$&B +>:d%oYwQ1l3:M2l.&&}fBWW~q`= +rsT[Kġ.GS9Y[
&ԧRXL o(z$FeRя${ + +!XAQ2/mRbނ/ xZCQm2$IGX]ByB.UTnkS@RcҠ^! m"}9 +Hͩ6M5qvEdf#&8N)k0P Y=:PGYOmvxTt5.,}
Cu6ZRA6)Z!쇃'[uquWb?B@Qƅ`]}A=JصOl@ђJ@sLْ"zbxԽbf +`1gm"ZJrtoN+BZ[o߿bVS,T獜r +8S|}~3tcNmεvormNmSO>=9fn٧}6oR"A^ؕ*͛nvf붵y-?sݶ۷ÿ{SkoK6o/Q9Cip(qPPqqrJCiWRU[7kj[u|;]U[Jm]UM_kˬY +!bis7FhjޜȫjmZ7f_}@^_{j[ڽM{Ֆ6-][=Zmm6Mmnyz{qnͮ+:m6634{ZoӪo8uwsnys}[?@ye㩟m^nڟiSmZwK;= /mj<V;Ϫ'Y[۬V5o[g +z<n(?=̍#NLyz& +(x`;}FW#{u
`9);* ߜ@%<F }+1 +%o( 譶yX}c&FW⯰<&<`إD0DW~XO)41Wc'ʑVSo8UW[_YSV:oKbaǕ1Xs}ĩEzGGi
Ho,+=q0+<Ee%]٭{ "||zeٽ@GψL1v%PCbdyK,K15 +F :%l)1k+ycq믽Lc:7g]|ILoY^g6ԯI7`cUw8S#cF`"A&L?ڎijnS,q|i`eWJoW]ouӪkw|s7J^(_فF}\33&˃H92I*`7!Zhz/qlyvw+։־ζcuŽ^]W}z;۷qYs}5/n{kk9[k1smyƙoj;;_k}{Zks}6m|η~Zƶ0I&V +!Cj n{铣gnA33>9TRX +q(3- +&؉kyZdKOe&-a3ןMKfDIKؼ33eV.HEƎCOTH
+ +ƁC)6q"q
΄`S20aI6-k24F<$D0Xt"$KDUn*08dR)beL
/2ưDt1FPfRaTt-[:b[3> u\$yBAsZӐt8H8<oCBⰐhqiHǢ4\+\
zA0Hd0'ZhLYh1#"bapFhD5>"CтTFH{@0
Q(o9d!tH"\^2 cx]>Nv`·dL$
؇ӚP!gHR,BY<r<@=Q$yzu@: +51٨X)p>r\z2bJIȄ2 PP`c6 md6C#lFa@Qeuh<FC + +*KuO:Lb%v o0a0O86I}vٍĦ`m,}k|qٓޡ +(I2i<EAG*[2YxB9'z./.L&.Ɂ + +T,>``7801BgnF\
74},":6y+ +[aZסY(|[xRF߲44kWiHa!U'>UR**%STF#)LB-2'%+IA@lɀHE8$DEjȆ(hJ`hZԵ&.4{%62l
Ѷu +#ۄ+"P*[¨ *D*XAd :T@{@6DPNhdÌ !h0([Ɔł@s].:0uĊK'N.]\Xp`bB/vhiY2Q2Y\d!?!%3,ۖƓa];`-*21!U(@ +sh* +EgJP**)`*4Bj2(7AA\(+ÈEB1$0"mmP&,[lB'>"{n +=h&I M$th= Η0R EnM^*L+i84qQ +-nf0C+Xm&
Sj-^0@1ѴD34*a1R5b ,$@I"s1* +G +8rD{@^T#E*hU"Ig!u`He%( UGbQQDuNlef`!I# +:ÄlC#9,l6ٞh2)U*,#(DԳKJوeHtp0əlgW4F&l)q(\lDA։<`2jpD% +.̏T#)-&VC:%`jJADHobȸ8 +: +=Lư(
\ +(*:V.DA|0= +`IF3AXAp TtBO..G0=t6Ĉe(, +"+˲JYV@{@P,", +(= ͫlPƷu8 +JeeY֚NG,{в,706eY6dY1fYpP2B%"K}4,YV@Z +^zP +cX0H&͖*FP`,c"Y~s\y^8c"QnÛ8͘HO)&MX3z-ȹ^MZ +ox/VvDV86kHo<y6¯V +K2P +*PJ !!`9հ0!S
3Tt,*EVPUPtSPl])`5BwD*ZZh(R@P)`-'ETRtH.G"qm&(:Ht%tPX + +B;(z頰*e`\WE#2]8.%B%"(-syMɪzN'BCe0T,yTW)*^RU)v(
Q0zE 졀fD 0 G i, `rG7DhYt@_0pa5ܻ$LJEh@˗ +"`J;bGR8İV#7ɒҊ6*EQt,`0pE +FqQt6mF{@ؔX@ZQtPX5 +"ŎdZ:64_&.+tZP]XzXa*)
C'aA]XJ5.PMLHҫ #*0.bEzU!c*6l3%J
cxąBIP1h
F;AH5`ՠ" +j0S`0ǣ
+endstream
endobj
20 0 obj
<</Length 35150>>stream
+z SN $h0%bTGOt%pON0HpAQK)8L;TœePXPVs<K%qA NQ6d\4 +U{@D2`3GK8 +hM8S*Til4^+J%MCS2)mbta>i!Qyևq (8RE1Jr(]k@\,(6Ej.z%z{^̓d=p.4D% +)3&QwĈ> t +82= dUE35Lu80x +Fl= :"2m& WtŢ$Pj&"9Tl$\4*w!l(K P; +&a$d_^B0&mq4h_Vcrx@)lHR{@>աPh@`5xh6BDEE'bXPYk$Z{@.0r$t:ƅT?kK4 *lOVn=Pxlr©)A]GB& Pu/4!A +JWiD@!/6/4jORç1*;= $
à'ē,8wY1':qV{@$J'+Gܥ-
jD$XFd2FvLIB!(2*V{@,\Ɣu2WP&1 '- +;2
(-TQDxnDh@ +Op1*H`"N
0NJPR¢YHvi$8(Kt2!#ɭhYBW{@.<(3 hA +u֧S-x8[0&S3) RGR=Ga4;!B/Uv`I +@GP5`#* + Q@]n)
PUL=GoHW*)VKsϏya'jTV($L %+~)'Iy3UAkwzdl)lQlުkIIXY~eJdy'S"g:`I +YQ +.F2ɃDRh +0 1!"2 +p,NuyR(&_3̟-
r1~9
h^¤=cDLоvе*kdtΟ`T!M +^2pK-8Qbl#ljDc[Qz2|Qqޢb{K(ztoʅ56u{XΣj[_Ys{.N2<_3l)V3#;P +Z,jd#L1|\V5xd7U4F&+FE?fۥ^aB58C*a +,=#31Ό .XARBY-Gnx09q&\C.L~ +#Yx(aK}HBԝLGL7)i_z$ȚT 蜽fޅs?)du m*²١s~)DT{MSw̶sW^kaF0e&R`@S6R4bT ҦHrTAdN0C)ip4ˋZC` +%JoP`GĈ~H**bb,gjG+0|9o=#jXfPڛsQٔ.j*&ODOqݛk( +uh(fFd9sc!:/Dmgv{!%j{
hgpWS|G1BVŪ%-9y\= r_f`Z:boK[sJ2ĠLUB̫>
,`sZ,kTH.C;vQ2Ȧ3Z{pIȀ?(
̌≯E|dWrnh6A!es+exAzUU,06%BՌ +ÕZH\toҨ +$D33hq$U9QVi}"ݕyF~{G9'6cDNYTUVgC>ey`잧ڨrQK3_`*iRxA>X1J"pn*l %T<^eZI.-d$CbUִ@>X/ܥz^ɠ:<l^fdw#ᯮK祙s^@u.ඣ('*^ٯ,gBnIExkT.AțRsxna4mYKuۘPʅ\r0;Lp.Ϊ~{F c?5vщTx +s[a +r^K쇫\KæJF&u'ذN<#حg' +Iy ' +ktCx)䮕1vBO<m?79`P83hBD !N f$7ǵc.ZIGSőЮnc`z|'HkJ)$ML0`jn7rj$
i-Db+bel|*T+y H@<y7# g/l59E'
If~Rd磻$^O49
;;wJo:+WԞLN~'G$E_koO$Y+X핉N[M7p'6BhnKr
EqpZR}Qu_)`2odl4»İjn'e®HWS!TsT/ǒK֩SqBS3d LkO5b+FkB˰^qi&
7% +=zlHMݑ^*F{`>z91*7IQ^M}O톁¾qќn:? {/\x̛<Ey$mb٧ݾԕz=۳ +5j)+%g,;.+n<9ԝeB
6#Ck4kkb#uB"gJ5JE%C՚KH?ؠ:(^u{vU]b0OH"hB) +@g/B0'=s{)ʀ-RúǧJe)c6L=s
`,5aɵSzvmϴKw5* 0map?GS0~,R: sygwXp"AL?,=9Ueori휇';m|uzݎ}9odh 38]e`r@"-.o+b4[ȏosPw]% +(v{L2:A.{:/<*&ƸiqYEd"h L
HYp +p>'>CcoҋdKhhveN{UMXcK{5uV<+c:g>p-]_l4*QB(0
.XMy~/(,{_>PUt<Y:F2GaIK,W/1ȋaP7IbMl/,Ҭ%2h%
7<"CWh
CP8D9ႻHЍ2Ë`v\e_}O8"#;_s
r"]i'J~O(CH`pSVӫ.p\lIG>;8GRTVBcAD!pP|6UP
+H/4$E1M6MrQLA|Fvu4Z ++Y8J`06Oʑ$ g3h3quxhQQ+)M1PVٖ&j]8) +MEJr,Km|-J9\)HDocPg8a]{A-ukO@\kE-%g{@=^3!L
Dܭ!" HilAF'u"5@gn2Zq,72,2'Pz 7 +ǂ뗸><]U㴖=KPKaWh{ p ]`0OԀD_6%v5N8N"jil:,tQ`ز 7)X+3S>+(NdCEP' C*,h*!X +2eI'/ُ4IU#y˺Ts9Fc: +z/50Xo#ٜ@Ŝqc)N %Y +5p}*;+ytO̊GeD8&BNf{5j@Gc<Lu.P~̵-0 +}S +Lec| +7O#Qʹh +?h҅ZGr4`E<$0Kr7& J@)z`ʕz0S +֑11炵%,yD2oB_v2T +b[V?AI)b3icajeBfo1=}aEpvocg#OЯ S[֬X1OF\+/ZŅ4?@]uXqؖcEl^epPwTz^^T5ל"`%eKbB'>(uGib,"jP"DIA1P_zsqN0X),/וMҨYF3^nTb*
GZbnt=v8Dw8$'0 +WMHd,M߬?^}Ƴ*dge'$Lb=lh1kj;Mr Cjb:Ҩ8thlp-Pąf¦@J&\-B] + M\7$u|UH J*euSx^x0a,=&Igy:|(<NJ$lq7nyҀ&J.-r5e?opy{F-4?CO/9FL6yu +VXH{p<i%7rF܄-U<!pZ.0y@sM1`&h)(&P'3˨,"Jމ"aȰߣwWxev/[햋+5*O.9|^y9R8yT^%&
6Y?.HJzbʛ.#gɾM@Ei}o3sO>ItS_B5mN (cMh-<AVjT+J1e]-dFhL7R?<=5FXyѫɆR'QkMEPhCjN +]BFIY_w~l*h+x ]GqlEW4-:TylK%
& m~<LF;4[p<zĵf/Z3Bk@a$^>8K?"=9&r*SM*, 0ch33.Hc/kptkrn>)CYi&VVvu:j6 Ž WME~ջa;fjņm\0@T*g0=:Fi!-Y81/4|6wN9iƦ_+Z&>rJ1gṁ%۳;BtUql +f:#L2vt;IN,#ۿ&m(^2U[VQm.T7EPF0BC>#2Pbُxbө᳠xP4<* +O.AQ+BwRddQPEdɩIytK_~) ㊔(:WeWt[wZ]"zξ;Np̩qǾw|vBL9X5vvcD_ +uq}Fj7C?LY*rOŮ_vɲaNDoW<-Lttv/蕅qtyJbQ W +(Fa\MG ܆J,(K"#q*z@lk/t5Fdmd
Yu$wE4OM, Tn|w|2q%~ah5e l
?ts ]L&9Ζk7>͛~cԐ)-bdaCyٓF&r
1-=CĈ̦-:ѰKu]D@<V[NF]⍭BO׀ +$ +h{~p=i8s!_8/EF@UW# +2d]$}x$k$Q5,!0!X"n`+iq/JOdYQest (҈;yZ\dD֖,%9p\ȏBh +!ASV.oDiH@ςɴ|[ɰQEᬁWdax$ati)gclw!ⷪd6ʿhE=O1n +/ +;I
ԕ`<\gG)@cQ(7>"wnc$DOQ(Ep!v~UT[
YhN?'z{3S=b;v^kI
ؠы:j!|~ +) +Nv3!TOXߞ*ۇ:%z7o4FƿgYUc%*dVc't3Sȥ'G-.G"
n +M*"C[Ay&Ur4Cp{?è&d@(;
x&ῄE +eW$>Qh0'(0g2$2/8Ah3PAӢ;KգB(9Bٝ*P#qWlf Ri5m7-
1m>2
eu4S|Iz¶3dX.V@f$>UbAA> +)EXF$fkx< 4MDHKg n9T˵AC?dE#oWC8:4!i`X>)67ÄfP@C_\0tmK07(X-3y& +\ggja<e/c7 # +$Kj#@ p9YYx20
34ݾf8;;r弟gAͻ`vrFpw^2mp120p~q +.R;k~Gho@G˵?_|nƟU"chY3`Ol崏oɝSxpBI5klb#63df
OTGo`F_Ky)`l3/?a]\ViZN"^@.~q+DsC)!nu@ؠsqhY +쪡Y8MC71'vpf-~)-ʹ6\1CI@أ# +2V{h菮-r11/dC%iHbA3tq8)yFh'.K³Rɍ{)h6["ݤ/N"HM5XJr፣Xgh@aƍÏQoPo#BCS'}IΥ^ܾϪ[f!!k?mG WJe<љ$H=cRÓ]2BLX'0$)2hkme߲Ia
=iyprYŊ㫲e܊6!H5ܨ+7Adn@1xR&>]w#
i=}yq9- O,ofXm|!#hӗLv3P +^'D<tHlIߝp$6ެ%X`8
K5ct1k:.G[P+0Y| +5Zok)8_E2&،=O +P#<ї4R^[j4oEvRX<> +QEC_KA.N}`\
곲;ܳ):rDV_#MtHB E؟|HiԱI[^ObI{J{nܾ+HBqkR<TQTf*d
*Wj~8)X[ǔ<fECPu.XLӖ%?[VK˦ޫZ^^S{>J+䀜EgUl炘+R5! +\ƪ??hcZ%fǜm,(!44o1jZ;b=CP@7bBS4Trԃ_e!z +LYC+iJ' +^;)՚L\6o_4;awpN/AxR!qΫbsĵڬc2-N͋Oe%i6<xtXe}tېuB^:m0^?*Bw#|A+_G"}vL>3T?֤>6Q#ELJ]47$B͗fF˸)͖]QMy9,`;UC[Gxhc#)Ţ6dquZ۽h +2wd +hIemT"%t4sOċ +u](0
ҢXok/E&#ƮG繱.ros(5>uj8ԯ`_J;lPi~h>T<h]mŹxXpMJ*U&هXjK'>JVΞۛWs1t_uīgp
D+XwtwOE#?pV=.- pef&^YS}fJ'yH?Qa*vyxAl1
qz
ۛ/6Ugq&c~[oE*ԝ wVg%d46Hi|Y2P(zbbx04t~wE'z-@7B +^w_ņ1mZRu/(P8ݝ czzsabi%Wb%uVrdD;QaS]b髡 vF4 7.b@j2\X| +-佤;F6-ec&;hjLg/$} YԠo<OjeϝʘVK1aA\b`} } +dY(U5Lޥ +ٿoDoţ
( +XeWr;&e$7'pL\50x}sbb9PٮUގkZq.U͵يuh%uaP3W噦~a<-gj-zQX̎gX
(9Ș\-@*Z( +6v8D8J +rlqhjsW|t8Fǿ^'asVWef4peҥKg:0x26$=#s|BG*ėN2MInhP^@5M4Mg +i#dO2,V +폓l#YC)UٝUD`*eZ=D([L3^I/J h05h*!4AFp3rVF5`fN }iHzq{qC>uy:STGS65Hɲ,oOڲ@riyˍOGz[ +0j'`A0dFmP +35!g-bKZoWI7*0D2Uu(bC=? + +V8.أDԹ41hz9G(nu0n"JO㕽n= +ҌC*Tc5a TD?A@2WI&\ݍep$,Wę[1e}vn_W;s +ApYYR^R]j%X[zDb Oy@l3oc :LzyH!R-=pmÂU6FWfb4686M wrVQd#g.iI|,=$\JAҒxfqAZi\ƬH.cV*Z!2|7tA+=U..xH_Q`Z3QiMQbȡi*VPYM[Cof#hbjni$7lSLPGҌ6oC3]qd4@T ͓J8BM%&NBe\VPwq[i[,cnL<D$*NN(|~0i&trlSzd/=E)L@țxjOmme1Hu8:igm
aA.j\Xldh&ь-j:s҃IK~&1%&|҃%|pd!VU"cuMǵ*S'}aF \ .U}`0RVOUv(ç!3y_
VCyEokA+lzbauCèN%*hqPifAEI]f0
VlxKLMV'2TEra9qDPb|5Gc#NWt8sHV!uNsS:Aav-Nժ M㈐Vm,dEhXM bV 7'Rh+\x5~¸2%-Ggxa~7FPխ4
PdL,S )@d`H%|yl4ml1c3X +J-*iE'IIIq菉;;I JmQƾs'Ir$EPH!x-N6=/yO$HH +I?P<%_W.&>58h[_v=ӧ8B+J& +A-ˣ (ϣX;#$8Bĵ Nr25&]W(K#;TCC'zW~ra9n,r"9d~a>ʂQ̘ɝXuQ>qؔ}=$.!G(8ԾQ;k9SU.8f]0V!_z:Vv~@3l}5!,g=|UH&v΅sBi #wL@~Ⳍܞ|d6ܨ=x\ M}"bq +i5Q/KDE,rVysܯI.*E(% +[.RK)C42 +r!t`=83:?)!H~t0ѝi9ނ#/lCS$NBJ8517jVJܜWY=h``r
qD0V'
xנR#.JE~O'jfd%P400akʫŢj?)@Oua<+jjj,z<PI6@MstԹ[} k8f*U" +)~N'k%贖l3TVhHzAG9oVlD6$D') oN; %̿lI>G(46~^0]a5`?
]PF::[W@kŴ<DW`2V|[;bT,G(hztE1^꼗Jye8j.ĭdeA>H& d!,`fȂ^.rxa<'w>4SJ$<bXTEa[EcnOx]1OuR[Igb@wdYLҜX:O;DP5P +CBUxi6͆N<p\)C(\XiHqu`<pd?)ҧPc!=2.Qk9+3I +Ϫ[p<R!#a0h;@A\gVl{jagdnbuLMpu9ŏC>n-<;l݂z8"&wAbN.PH +IކD`Ɏ."7)c8 +WF=㼷rIAt~¨M$
&ނidÊQIzCϣ?UԦ>#
%/HҐ`!gQЕ$Y{q+ F=x|`P5O,7.mU`V<pF`mjNL-NjVK[,9qnJuf3H)b^ݾ5&`#^FZua<:6T5OϹ1~ͨGuziv;F+R7k>,bK'<_*rj,Dy[\qE&OYTAӂԻE_C^=\0+X
DG)}
;B&?:}#~U7ѣsh_CEL~tz[CNQs WR?o
4zQCdLWDC +X;q`5F<䫡a˞An%SSOlaX,vJ8;frX竡Ȓ]$[U$V$dG_p:zPX$S<
Ge \<O<zJ
|ڶO0>&v%4@>Qb;MXAQ?\8֯*]DH3atyv9jr +KU藬F( +ECȀM((JM?Q9Oݛot +my'z?<e7h 湿pn{LKt&:7>-G4圣''xܧib +D3>9*읗7?wʽyfOQD/{#*ޗDM.iZ<˿{h2DFM~i2ۛ)`:{}<x~~^>5Os?ϔEQ,GB +'; +dD
j~Jȗ)8EO1ć2F3XjAA6/h]II(XBOV^vH|݁f8XjRYuLi3JUY%*PO`FAh6hˣ<ѨX#k#ό%T]zy\@P2{@g1"QkF4` LAAkZЫ(? +G(@Mkмmړ;IVA䨂^ 5U˻%"b,Sݒ1ԝ98'@Y4ݢB:ZJlTH0CF9C#D%~1$.(H!B$@Q@ImIwj))-:b"
x~r,ɨL1em + +9Ŕb +эFz*vMXals9a4{:a 9{mS6d0Ј,_AFk67e:pi.O +kR.3v,xn9BAJoriI.0~S)F f(:(:>KQV5,PW5fO C6^;^Oz+\^\TTwh8Z#nDA{HY +,sZ4s3t)2
|MVGB$Q5D&v8sDuB&Ϡ]j_'.) G +j"Mݐf? +a"I)'4F/fJO<J8!@ܣǢVu +)V꒼*vyfם^FGgwM%
%ZzhΪ1iLJ"miDŽĔ\wؐ#YNl4tU@ +5arsfWݢsàZ>v*Eg(ө(0@,/2r-ɆHj̼vy7'm +"oJ5@V3od/Һk#YS#H7QȴI9~kċs6Er9E#F2ɍ̶6[
tNj{&.tc(3$wi/!bH3MWN2M/smSѓ6f +kiћ)W +-Y^TyN(DvͽG.ʕXuYWH8A(An˧#@t.iG$Y虎ȋ!?$zk
]Cپ>vvu8!g[ȑhU%eԉG]i1f3==V)1'kinD-Q:Ɠ?)|IE.ç~)D}m+G3ϭmeU?i])1+~ 1#~;&6I2k+nRbk܊V(bSBY`ſR+(U\ 7r2eVzuؤmd>reÙ;"8Y,M6&T2Zvr.ϵG{(PxEL{EdWX!`8{`0!_t +&Dxg +e +uG{ŏsZ{Ŕ3Dj*} \MA'JȗJW!S,IاbK
6I"zF`S)&QP{MN(=GDB#vEZ=o3c!T1p,f/Ve~Cug_gHkSv +F"Q{S2(fn<PuGh0.MyR8K# kc9a*!́2KWjNY`V *~F[-UkE&_YTӻ<,?7nfm6Ќ'Mx5NsI
ݥ*'PSRQŶf"p1fA(}fQ&m +#V2G]^m%)fn5gSZ'7?K1{fyD4YM,VnU8+iy6O)[a`DBEClz<NEޤqJ_yoJZo"KWւGH m)67>0g|{}%0'nl3:fe3ׄ
4\x
y,HoY%¡9 +DF,/F,[\7F<Ě̮``(Q́(3"ci 7PcUQBedSacCdƣ[dV
%X#Q,ٜНlP1F/?hlv l&ϡfh?=llPlC2M_O61-k#@6p#(a"r6|&pՂ:(uq8Ѝ;J +7dӀsx'bl.>ԋ^żM=0Jb\
l@GӲf'o=l]od/FG8kfa7x^AVL +#J* +9iva"`6vtFXyiQ4ScoV7Q8im%d˒%8jNDȈ7vHB;ywJܗE -2F.(48*p"i +}Зq30HCXB*hS'Q7F|)jv@kzJ@6 +`qX<Iwq(0<L`)V,0^e f }٤#PwGq)ʄ©Kdcd71hU?`:2W'wE98E +D3K&JrS! r15n˰] +8e/Xs06Ҵ(okiD.uQdd%Y +>b<֠BxQ qYNԟ7$0c7Sm*T6zMVnl#2lC=3Yݜ
WrLd^j67P5TG2!)08M]':~%&/֘MTE$ņ;p:j-W1 +$Z_a6<%$bSCۂcŐ]]B{|m;}( ,tJ_+5Qk֘Pɢ5a.N-,g3*./)ʄk6_8I{ahOl, +(%s +q-|Nu@(M`g h +ncI>=D*s/-?T+%#YR,j咋(ИFIYRK@C&!ڢVG<hhWR_HTXGӨƉmZ}'г,?O_R)+y +EJQm{,1 'ǘgb`L.?u4|h۹R +Фeش2QnE]M;Zv*$Q)I9 +ud2K=x0ܒcPY1JE >jN?EI{rIcګ1&K!
lH9m̪|mtkm0;fgV39P~A㒳FeE9cOUmR_hbq&UQWp/EN8ȉ0v"Tc?SEHerLįdeߋ`Ң8;`
AIyH[ [ +չH,.%9PzL-t&"*/>%,b4 +R_uX5"2lњ5ѴyjMZ=MƹpTyKKX#Aᛑ=dmS{AuA6tՐ/,%nYa +D
Dbk$(W$ވBj( +C^8łSd~
PcW~7~g}Afy@Æ簥2%3ݙJ?U=ٞRz),GQjwoMpPV4p,wH5%z;v*xhVeul/M5NrZK<AjkFf=gf@z(#tmLxW+hNs++YxF'*!~eq;tB&1_wKmSCB!XNMF3 ub"'HXsƄ$ıQ'Z]xqdjy$WX +WMD@gCTNDXbdbz|KV!
V7X_>Yݐ%/E !ĤMbaCla=bD#J|M%{q&4q<l$ij=vHY CEujv/8sHHa2EP7hG2vp&gkOM@ey¥fBs[9@@= _]5!ӆ]R/2W#1BUVcZ&S;H +"qTѵufkl /Vp
͘,b029^[Lwu&OsR^NolK$ԧ +fhjlpMFr~5GP7UBeBma$3^9,TwJӯ@>(Gs]z8P^,$*D'Jx~,}4MbKCCdCK0$ur|GTOw
&E-H`6 h[8i-hbjs/{5h +fK`)2M&GLӗ@`+A57E@cH|h`yo0C<
<\쥮|GN%^,6Sn wj#a1!!*LHlol"YkYS;6xptݵ6m#oDłARC%AT=PaM٫ +9N6Ƒ;gu1XUuK8]>[?U"V/] +~'kqZzkCM<clEvr5D.Յ +6:\py(n7R^wL`|erP9+p{ΙWOGϘ3ho#Keqs'1rLcly;ЮȨx(9u&_4_5>
~1l*CR zi\(J:' :埍#~3-#n_)O5}@ T<"rNT&|ag/88A%ǃj%DZ)|KvS~A]lDyyBNf +֙hׁ!nf:<aPn'"e>_וw#GmW;R).$6Wt>(a*9D +`/.I盩Ouj4V-}/5\ +^Md<sS$gNZ(ƹKT?# "k1) !ˋEYp:,o) +t9thV1ԵĄl"G{l{{DWA(DIޡ&[!hO_@JvH.غ;^L0*B%c4fxlaIL%®c$7Vva2%M/jXLuXWql#@s" +\ҫT=jNj>w5>(e)R2k7BCV%]P!I$peDj{c /j$S_^^d #]_r34O1VSb/k-xFBIV]*.
PgXR48%E͊Blb̶S["=8$gl~$O s$;6v ^q$.bᾷݥv4J1J +RCƥg] +;cTc~m'^h9E*j$Z/ݤM +t Trv=ƨm9U>MFf?/A)0gq,ZDmlʕI, jKO/lґpv+ +endstream
endobj
24 0 obj
[23 0 R]
endobj
36 0 obj
<</CreationDate(D:20201123121918+01'00')/Creator(Adobe Illustrator 24.3 \(Windows\))/ModDate(D:20201123121918Z)/Producer(Adobe PDF library 15.00)/Title(UVtools_fb_cover)>>
endobj
xref
+0 37
+0000000004 65535 f
+0000000016 00000 n
+0000000147 00000 n
+0000045807 00000 n
+0000000000 00000 f
+0000045858 00000 n
+0000000000 00000 f
+0000063893 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000063966 00000 n
+0000064162 00000 n
+0000065425 00000 n
+0000131014 00000 n
+0000196603 00000 n
+0000000000 00000 f
+0000049698 00000 n
+0000049511 00000 n
+0000231806 00000 n
+0000046281 00000 n
+0000061209 00000 n
+0000061096 00000 n
+0000048450 00000 n
+0000048949 00000 n
+0000048997 00000 n
+0000049582 00000 n
+0000049613 00000 n
+0000049881 00000 n
+0000050143 00000 n
+0000061244 00000 n
+0000231831 00000 n
+trailer
+<</Size 37/Root 1 0 R/Info 36 0 R/ID[<AFC1730E2FB52C4788492E3E06878DC0><D96B84500A6B8547BCAFF5D5D9310B3E>]>>
+startxref
+232019
+%%EOF
diff --git a/UVtools.CAD/UVtools_fb_cover.png b/UVtools.CAD/UVtools_fb_cover.png Binary files differnew file mode 100644 index 0000000..e2adf68 --- /dev/null +++ b/UVtools.CAD/UVtools_fb_cover.png diff --git a/UVtools.Core/FileFormats/CWSFile.cs b/UVtools.Core/FileFormats/CWSFile.cs index b86efe2..6ac5a7c 100644 --- a/UVtools.Core/FileFormats/CWSFile.cs +++ b/UVtools.Core/FileFormats/CWSFile.cs @@ -9,6 +9,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; @@ -662,6 +663,23 @@ namespace UVtools.Core.FileFormats { //DecodeXML(fileFullPath, inputFile, progress); Printer = PrinterType.Wanhao; + + try + { + var serializer = new XmlSerializer(typeof(CWSManifest)); + using (var stream = entry.Open()) + { + var manifest = (CWSManifest)serializer.Deserialize(stream); + OutputSettings.LayersNum = (uint) manifest.Slices.Length; + } + } + catch (Exception e) + { + Clear(); + throw new FileLoadException($"Unable to deserialize '{entry.Name}'\n{e}", fileFullPath); + } + + entry = inputFile.Entries.FirstOrDefault(e => e.Name.EndsWith(".slicing")); if (!(entry is null)) @@ -746,14 +764,21 @@ namespace UVtools.Core.FileFormats var displayNameAttribute = propertyInfo.GetCustomAttributes(false).OfType<DisplayNameAttribute>().FirstOrDefault(); if (ReferenceEquals(displayNameAttribute, null)) continue; if (!splitLine[0].Trim(' ', ';', '(').Equals(displayNameAttribute.DisplayName)) continue; - Helpers.SetPropertyValue(propertyInfo, OutputSettings, splitLine[1].Trim(' ', ')', 'p', 'x', 'm', 'n', 's', '/')); + try + { + Helpers.SetPropertyValue(propertyInfo, OutputSettings, splitLine[1].Trim(' ', ')', 'p', 'x', 'm', 'n', 's', '/')); + } + catch + { + // ignored + } + //Debug.WriteLine(splitLine[1].Trim(' ', ')', 'm', 'n', '/')); } } tr.Close(); } - LayerManager = new LayerManager(OutputSettings.LayersNum, this); progress.ItemCount = OutputSettings.LayersNum; diff --git a/UVtools.Core/Layer/LayerIssue.cs b/UVtools.Core/Layer/LayerIssue.cs index 58c086e..02ed9ce 100644 --- a/UVtools.Core/Layer/LayerIssue.cs +++ b/UVtools.Core/Layer/LayerIssue.cs @@ -48,6 +48,21 @@ namespace UVtools.Core public List<uint> WhiteListLayers { get; set; } = null; /// <summary> + /// Combines the island and overhang detections for a better more realistic detection and to discard false-positives. (Slower) + /// If enabled, and when a island is found, it will check for overhangs on that same island, if no overhang found then the island will be discarded and considered safe, otherwise it will flag as an island issue. + /// Note: Overhangs settings will be used to configure the detection.Enabling Overhangs is not required for this procedure to work. + /// </summary> + public bool EnhancedDetection { get; set; } = true; + + /// <summary> + /// Gets the setting for whether or not diagonal bonds are considered when evaluation islands. + /// If true, all 8 neighbors of a pixel (including diagonals) will be considered when finding + /// individual components on the layer, if false only 4 neighbors (right, left, above, below) + /// will be considered.. + /// </summary> + public bool AllowDiagonalBonds { get; set; } = false; + + /// <summary> /// Gets or sets the binary threshold, all pixels below this value will turn in black, otherwise white /// Set to 0 to disable this operation /// </summary> @@ -78,14 +93,6 @@ namespace UVtools.Core /// </summary> public byte RequiredPixelBrightnessToSupport { get; set; } = 150; - /// <summary> - /// Gets the setting for whether or not diagonal bonds are considered when evaluation islands. - /// If true, all 8 neighbors of a pixel (including diagonals) will be considered when finding - /// individual components on the layer, if false only 4 neighbors (right, left, above, below) - /// will be considered.. - /// </summary> - public bool AllowDiagonalBonds { get; set; } = false; - public IslandDetectionConfiguration(bool enabled = true) { Enabled = enabled; diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs index 02e4988..79cf506 100644 --- a/UVtools.Core/Layer/LayerManager.cs +++ b/UVtools.Core/Layer/LayerManager.cs @@ -1056,16 +1056,21 @@ namespace UVtools.Core pixelsSupportingIsland >= Math.Max(1, points.Count / 2)) isIsland = false; // Not a island, but maybe weak bounding...*/ - + LayerIssue island = null; if (pixelsSupportingIsland < requiredSupportingPixels) { - AddIssue(new LayerIssue(layer, LayerIssue.IssueType.Island, + island = new LayerIssue(layer, LayerIssue.IssueType.Island, + points.ToArray(), + rect); + /*AddIssue(new LayerIssue(layer, LayerIssue.IssueType.Island, points.ToArray(), - rect)); + rect));*/ } // Check for overhangs - if (overhangConfig.Enabled && !overhangConfig.IndependentFromIslands) + if (overhangConfig.Enabled && !overhangConfig.IndependentFromIslands && island is null + || !ReferenceEquals(island, null) && islandConfig.EnhancedDetection && pixelsSupportingIsland >= 10 + ) { points.Clear(); using (var imageRoi = new Mat(image, rect)) @@ -1095,14 +1100,21 @@ namespace UVtools.Core points.Add(new Point(labelX, labelY)); } - if (points.Count >= overhangConfig.RequiredPixelsToConsider) + if (points.Count >= overhangConfig.RequiredPixelsToConsider) // Overhang { AddIssue(new LayerIssue( layer, LayerIssue.IssueType.Overhang, points.ToArray(), rect )); } + else if(islandConfig.EnhancedDetection) // No overhang + { + island = null; + } } } + + if(!ReferenceEquals(island, null)) + AddIssue(island); } diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj index 954676b..6825a71 100644 --- a/UVtools.Core/UVtools.Core.csproj +++ b/UVtools.Core/UVtools.Core.csproj @@ -10,7 +10,7 @@ <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl> <PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl> <Description>MSLA/DLP, file analysis, repair, conversion and manipulation</Description> - <Version>1.3.2</Version> + <Version>1.3.3</Version> <Copyright>Copyright © 2020 PTRTECH</Copyright> <PackageIcon>UVtools.png</PackageIcon> <Platforms>AnyCPU;x64</Platforms> diff --git a/UVtools.WPF/MainWindow.Issues.cs b/UVtools.WPF/MainWindow.Issues.cs index 6542e25..e06b098 100644 --- a/UVtools.WPF/MainWindow.Issues.cs +++ b/UVtools.WPF/MainWindow.Issues.cs @@ -523,6 +523,7 @@ namespace UVtools.WPF return new IslandDetectionConfiguration { Enabled = Settings.Issues.ComputeIslands, + EnhancedDetection = Settings.Issues.IslandEnhancedDetection, AllowDiagonalBonds = Settings.Issues.IslandAllowDiagonalBonds, BinaryThreshold = Settings.Issues.IslandBinaryThreshold, RequiredAreaToProcessCheck = Settings.Issues.IslandRequiredAreaToProcessCheck, diff --git a/UVtools.WPF/MainWindow.axaml b/UVtools.WPF/MainWindow.axaml index 6526eeb..b5cd862 100644 --- a/UVtools.WPF/MainWindow.axaml +++ b/UVtools.WPF/MainWindow.axaml @@ -138,6 +138,15 @@ <MenuItem Header="_Help"> + <MenuItem + Header="_About" + InputGesture="F1" HotKey="F1" + Command="{Binding MenuHelpAboutClicked}"> + <MenuItem.Icon> + <Image Source="\Assets\Icons\button-info-16x16.png"/> + </MenuItem.Icon> + </MenuItem> + <MenuItem Header="_Website" InputGesture="Ctrl + F1" HotKey="Ctrl + F1" @@ -156,14 +165,7 @@ </MenuItem.Icon> </MenuItem> - <MenuItem - Header="_About" - InputGesture="F1" HotKey="F1" - Command="{Binding MenuHelpAboutClicked}"> - <MenuItem.Icon> - <Image Source="\Assets\Icons\button-info-16x16.png"/> - </MenuItem.Icon> - </MenuItem> + <Separator/> <MenuItem Header="_Benchmark" @@ -173,14 +175,6 @@ </MenuItem.Icon> </MenuItem> - <MenuItem - Header="_Open settings folder" - Command="{Binding MenuHelpOpenSettingsFolderClicked}"> - <MenuItem.Icon> - <Image Source="\Assets\Icons\open-16x16.png"/> - </MenuItem.Icon> - </MenuItem> - <Separator/> <MenuItem @@ -189,7 +183,16 @@ <MenuItem.Icon> <Image Source="\Assets\Icons\CNCMachine-16x16.png"/> </MenuItem.Icon> - </MenuItem> + </MenuItem> + + <MenuItem + Header="_Open settings folder" + Command="{Binding MenuHelpOpenSettingsFolderClicked}"> + <MenuItem.Icon> + <Image Source="\Assets\Icons\open-16x16.png"/> + </MenuItem.Icon> + </MenuItem> + </MenuItem> <MenuItem diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj index 2b64aba..5747b83 100644 --- a/UVtools.WPF/UVtools.WPF.csproj +++ b/UVtools.WPF/UVtools.WPF.csproj @@ -12,7 +12,7 @@ <PackageLicenseFile>LICENSE</PackageLicenseFile> <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl> <RepositoryType>Git</RepositoryType> - <Version>1.3.2</Version> + <Version>1.3.3</Version> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> diff --git a/UVtools.WPF/UserSettings.cs b/UVtools.WPF/UserSettings.cs index 6f6e3d3..a27c687 100644 --- a/UVtools.WPF/UserSettings.cs +++ b/UVtools.WPF/UserSettings.cs @@ -48,67 +48,67 @@ namespace UVtools.WPF public bool StartMaximized { get => _startMaximized; - set => this.RaiseAndSetIfChanged(ref _startMaximized, value); + set => RaiseAndSetIfChanged(ref _startMaximized, value); } public bool CheckForUpdatesOnStartup { get => _checkForUpdatesOnStartup; - set => this.RaiseAndSetIfChanged(ref _checkForUpdatesOnStartup, value); + set => RaiseAndSetIfChanged(ref _checkForUpdatesOnStartup, value); } public bool LoadDemoFileOnStartup { get => _loadDemoFileOnStartup; - set => this.RaiseAndSetIfChanged(ref _loadDemoFileOnStartup, value); + set => RaiseAndSetIfChanged(ref _loadDemoFileOnStartup, value); } public byte DefaultOpenFileExtensionIndex { get => _defaultOpenFileExtensionIndex; - set => this.RaiseAndSetIfChanged(ref _defaultOpenFileExtensionIndex, value); + set => RaiseAndSetIfChanged(ref _defaultOpenFileExtensionIndex, value); } public string DefaultDirectoryOpenFile { get => _defaultDirectoryOpenFile; - set => this.RaiseAndSetIfChanged(ref _defaultDirectoryOpenFile, value); + set => RaiseAndSetIfChanged(ref _defaultDirectoryOpenFile, value); } public string DefaultDirectorySaveFile { get => _defaultDirectorySaveFile; - set => this.RaiseAndSetIfChanged(ref _defaultDirectorySaveFile, value); + set => RaiseAndSetIfChanged(ref _defaultDirectorySaveFile, value); } public string DefaultDirectoryExtractFile { get => _defaultDirectoryExtractFile; - set => this.RaiseAndSetIfChanged(ref _defaultDirectoryExtractFile, value); + set => RaiseAndSetIfChanged(ref _defaultDirectoryExtractFile, value); } public string DefaultDirectoryConvertFile { get => _defaultDirectoryConvertFile; - set => this.RaiseAndSetIfChanged(ref _defaultDirectoryConvertFile, value); + set => RaiseAndSetIfChanged(ref _defaultDirectoryConvertFile, value); } public bool PromptOverwriteFileSave { get => _promptOverwriteFileSave; - set => this.RaiseAndSetIfChanged(ref _promptOverwriteFileSave, value); + set => RaiseAndSetIfChanged(ref _promptOverwriteFileSave, value); } public string FileSaveNamePrefix { get => _fileSaveNamePrefix; - set => this.RaiseAndSetIfChanged(ref _fileSaveNamePrefix, value); + set => RaiseAndSetIfChanged(ref _fileSaveNamePrefix, value); } public string FileSaveNameSuffix { get => _fileSaveNameSuffix; - set => this.RaiseAndSetIfChanged(ref _fileSaveNameSuffix, value); + set => RaiseAndSetIfChanged(ref _fileSaveNameSuffix, value); } /// <summary> @@ -117,7 +117,7 @@ namespace UVtools.WPF public int MaxDegreeOfParallelism { get => _maxDegreeOfParallelism; - set => this.RaiseAndSetIfChanged(ref _maxDegreeOfParallelism, value); + set => RaiseAndSetIfChanged(ref _maxDegreeOfParallelism, value); } public GeneralUserSettings() @@ -175,8 +175,8 @@ namespace UVtools.WPF get => _tooltipOverlayBackgroundColor; set { - this.RaiseAndSetIfChanged(ref _tooltipOverlayBackgroundColor, value); - this.RaisePropertyChanged(nameof(TooltipOverlayBackgroundBrush)); + RaiseAndSetIfChanged(ref _tooltipOverlayBackgroundColor, value); + RaisePropertyChanged(nameof(TooltipOverlayBackgroundBrush)); } } @@ -190,7 +190,7 @@ namespace UVtools.WPF public bool TooltipOverlay { get => _tooltipOverlay; - set => this.RaiseAndSetIfChanged(ref _tooltipOverlay, value); + set => RaiseAndSetIfChanged(ref _tooltipOverlay, value); } public Color VolumeBoundsOutlineColor @@ -198,8 +198,8 @@ namespace UVtools.WPF get => _volumeBoundsOutlineColor; set { - this.RaiseAndSetIfChanged(ref _volumeBoundsOutlineColor, value); - this.RaisePropertyChanged(nameof(VolumeBoundsOutlineBrush)); + RaiseAndSetIfChanged(ref _volumeBoundsOutlineColor, value); + RaisePropertyChanged(nameof(VolumeBoundsOutlineBrush)); } } @@ -213,13 +213,13 @@ namespace UVtools.WPF public byte VolumeBoundsOutlineThickness { get => _volumeBoundsOutlineThickness; - set => this.RaiseAndSetIfChanged(ref _volumeBoundsOutlineThickness, value); + set => RaiseAndSetIfChanged(ref _volumeBoundsOutlineThickness, value); } public bool VolumeBoundsOutline { get => _volumeBoundsOutline; - set => this.RaiseAndSetIfChanged(ref _volumeBoundsOutline, value); + set => RaiseAndSetIfChanged(ref _volumeBoundsOutline, value); } public Color LayerBoundsOutlineColor @@ -227,8 +227,8 @@ namespace UVtools.WPF get => _layerBoundsOutlineColor; set { - this.RaiseAndSetIfChanged(ref _layerBoundsOutlineColor, value); - this.RaisePropertyChanged(nameof(LayerBoundsOutlineBrush)); + RaiseAndSetIfChanged(ref _layerBoundsOutlineColor, value); + RaisePropertyChanged(nameof(LayerBoundsOutlineBrush)); } } @@ -242,13 +242,13 @@ namespace UVtools.WPF public byte LayerBoundsOutlineThickness { get => _layerBoundsOutlineThickness; - set => this.RaiseAndSetIfChanged(ref _layerBoundsOutlineThickness, value); + set => RaiseAndSetIfChanged(ref _layerBoundsOutlineThickness, value); } public bool LayerBoundsOutline { get => _layerBoundsOutline; - set => this.RaiseAndSetIfChanged(ref _layerBoundsOutline, value); + set => RaiseAndSetIfChanged(ref _layerBoundsOutline, value); } public Color HollowOutlineColor @@ -256,8 +256,8 @@ namespace UVtools.WPF get => _hollowOutlineColor; set { - this.RaiseAndSetIfChanged(ref _hollowOutlineColor, value); - this.RaisePropertyChanged(nameof(HollowOutlineBrush)); + RaiseAndSetIfChanged(ref _hollowOutlineColor, value); + RaisePropertyChanged(nameof(HollowOutlineBrush)); } } @@ -271,13 +271,13 @@ namespace UVtools.WPF public byte HollowOutlineLineThickness { get => _hollowOutlineLineThickness; - set => this.RaiseAndSetIfChanged(ref _hollowOutlineLineThickness, value); + set => RaiseAndSetIfChanged(ref _hollowOutlineLineThickness, value); } public bool HollowOutline { get => _hollowOutline; - set => this.RaiseAndSetIfChanged(ref _hollowOutline, value); + set => RaiseAndSetIfChanged(ref _hollowOutline, value); } public Color PreviousLayerDifferenceColor @@ -285,8 +285,8 @@ namespace UVtools.WPF get => _previousLayerDifferenceColor; set { - this.RaiseAndSetIfChanged(ref _previousLayerDifferenceColor, value); - this.RaisePropertyChanged(nameof(PreviousLayerDifferenceBrush)); + RaiseAndSetIfChanged(ref _previousLayerDifferenceColor, value); + RaisePropertyChanged(nameof(PreviousLayerDifferenceBrush)); } } @@ -302,8 +302,8 @@ namespace UVtools.WPF get => _nextLayerDifferenceColor; set { - this.RaiseAndSetIfChanged(ref _nextLayerDifferenceColor, value); - this.RaisePropertyChanged(nameof(NextLayerDifferenceBrush)); + RaiseAndSetIfChanged(ref _nextLayerDifferenceColor, value); + RaisePropertyChanged(nameof(NextLayerDifferenceBrush)); } } @@ -319,8 +319,8 @@ namespace UVtools.WPF get => _bothLayerDifferenceColor; set { - this.RaiseAndSetIfChanged(ref _bothLayerDifferenceColor, value); - this.RaisePropertyChanged(nameof(BothLayerDifferenceBrush)); + RaiseAndSetIfChanged(ref _bothLayerDifferenceColor, value); + RaisePropertyChanged(nameof(BothLayerDifferenceBrush)); } } @@ -334,7 +334,7 @@ namespace UVtools.WPF public bool ShowLayerDifference { get => _showLayerDifference; - set => this.RaiseAndSetIfChanged(ref _showLayerDifference, value); + set => RaiseAndSetIfChanged(ref _showLayerDifference, value); } public Color IslandColor @@ -342,8 +342,8 @@ namespace UVtools.WPF get => _islandColor; set { - this.RaiseAndSetIfChanged(ref _islandColor, value); - this.RaisePropertyChanged(nameof(IslandBrush)); + RaiseAndSetIfChanged(ref _islandColor, value); + RaisePropertyChanged(nameof(IslandBrush)); } } @@ -359,8 +359,8 @@ namespace UVtools.WPF get => _islandHighlightColor; set { - this.RaiseAndSetIfChanged(ref _islandHighlightColor, value); - this.RaisePropertyChanged(nameof(IslandHighlightBrush)); + RaiseAndSetIfChanged(ref _islandHighlightColor, value); + RaisePropertyChanged(nameof(IslandHighlightBrush)); } } @@ -376,8 +376,8 @@ namespace UVtools.WPF get => _overhangColor; set { - this.RaiseAndSetIfChanged(ref _overhangColor, value); - this.RaisePropertyChanged(nameof(OverhangBrush)); + RaiseAndSetIfChanged(ref _overhangColor, value); + RaisePropertyChanged(nameof(OverhangBrush)); } } @@ -393,8 +393,8 @@ namespace UVtools.WPF get => _overhangHighlightColor; set { - this.RaiseAndSetIfChanged(ref _overhangHighlightColor, value); - this.RaisePropertyChanged(nameof(OverhangHighlightBrush)); + RaiseAndSetIfChanged(ref _overhangHighlightColor, value); + RaisePropertyChanged(nameof(OverhangHighlightBrush)); } } @@ -410,8 +410,8 @@ namespace UVtools.WPF get => _resinTrapColor; set { - this.RaiseAndSetIfChanged(ref _resinTrapColor, value); - this.RaisePropertyChanged(nameof(ResinTrapBrush)); + RaiseAndSetIfChanged(ref _resinTrapColor, value); + RaisePropertyChanged(nameof(ResinTrapBrush)); } } @@ -427,8 +427,8 @@ namespace UVtools.WPF get => _resinTrapHighlightColor; set { - this.RaiseAndSetIfChanged(ref _resinTrapHighlightColor, value); - this.RaisePropertyChanged(nameof(ResinTrapHighlightBrush)); + RaiseAndSetIfChanged(ref _resinTrapHighlightColor, value); + RaisePropertyChanged(nameof(ResinTrapHighlightBrush)); } } @@ -443,8 +443,8 @@ namespace UVtools.WPF get => _touchingBoundsColor; set { - this.RaiseAndSetIfChanged(ref _touchingBoundsColor, value); - this.RaisePropertyChanged(nameof(TouchingBoundsBrush)); + RaiseAndSetIfChanged(ref _touchingBoundsColor, value); + RaisePropertyChanged(nameof(TouchingBoundsBrush)); } } @@ -460,8 +460,8 @@ namespace UVtools.WPF get => _crosshairColor; set { - this.RaiseAndSetIfChanged(ref _crosshairColor, value); - this.RaisePropertyChanged(nameof(CrosshairBrush)); + RaiseAndSetIfChanged(ref _crosshairColor, value); + RaisePropertyChanged(nameof(CrosshairBrush)); } } @@ -475,61 +475,61 @@ namespace UVtools.WPF public bool ZoomToFitPrintVolumeBounds { get => _zoomToFitPrintVolumeBounds; - set => this.RaiseAndSetIfChanged(ref _zoomToFitPrintVolumeBounds, value); + set => RaiseAndSetIfChanged(ref _zoomToFitPrintVolumeBounds, value); } public byte ZoomLockLevelIndex { get => _zoomLockLevelIndex; - set => this.RaiseAndSetIfChanged(ref _zoomLockLevelIndex, value); + set => RaiseAndSetIfChanged(ref _zoomLockLevelIndex, value); } public bool ZoomIssues { get => _zoomIssues; - set => this.RaiseAndSetIfChanged(ref _zoomIssues, value); + set => RaiseAndSetIfChanged(ref _zoomIssues, value); } public bool CrosshairShowOnlyOnSelectedIssues { get => _crosshairShowOnlyOnSelectedIssues; - set => this.RaiseAndSetIfChanged(ref _crosshairShowOnlyOnSelectedIssues, value); + set => RaiseAndSetIfChanged(ref _crosshairShowOnlyOnSelectedIssues, value); } public byte CrosshairFadeLevelIndex { get => _crosshairFadeLevelIndex; - set => this.RaiseAndSetIfChanged(ref _crosshairFadeLevelIndex, value); + set => RaiseAndSetIfChanged(ref _crosshairFadeLevelIndex, value); } public uint CrosshairLength { get => _crosshairLength; - set => this.RaiseAndSetIfChanged(ref _crosshairLength, value); + set => RaiseAndSetIfChanged(ref _crosshairLength, value); } public byte CrosshairMargin { get => _crosshairMargin; - set => this.RaiseAndSetIfChanged(ref _crosshairMargin, value); + set => RaiseAndSetIfChanged(ref _crosshairMargin, value); } public bool AutoRotateLayerBestView { get => _autoRotateLayerBestView; - set => this.RaiseAndSetIfChanged(ref _autoRotateLayerBestView, value); + set => RaiseAndSetIfChanged(ref _autoRotateLayerBestView, value); } public bool LayerZoomToFitOnLoad { get => _layerZoomToFitOnLoad; - set => this.RaiseAndSetIfChanged(ref _layerZoomToFitOnLoad, value); + set => RaiseAndSetIfChanged(ref _layerZoomToFitOnLoad, value); } public bool ShowBackgroudGrid { get => _showBackgroudGrid; - set => this.RaiseAndSetIfChanged(ref _showBackgroudGrid, value); + set => RaiseAndSetIfChanged(ref _showBackgroudGrid, value); } public LayerPreviewUserSettings Clone() @@ -551,6 +551,7 @@ namespace UVtools.WPF private bool _computeResinTraps = true; private bool _computeTouchingBounds = true; private bool _computeEmptyLayers = true; + private bool _islandEnhancedDetection = true; private bool _islandAllowDiagonalBonds = false; private byte _islandBinaryThreshold = 0; private byte _islandRequiredAreaToProcessCheck = 1; @@ -574,121 +575,127 @@ namespace UVtools.WPF public bool ComputeIssuesOnLoad { get => _computeIssuesOnLoad; - set => this.RaiseAndSetIfChanged(ref _computeIssuesOnLoad, value); + set => RaiseAndSetIfChanged(ref _computeIssuesOnLoad, value); } public bool ComputeIssuesOnClickTab { get => _computeIssuesOnClickTab; - set => this.RaiseAndSetIfChanged(ref _computeIssuesOnClickTab, value); + set => RaiseAndSetIfChanged(ref _computeIssuesOnClickTab, value); } public bool ComputeIslands { get => _computeIslands; - set => this.RaiseAndSetIfChanged(ref _computeIslands, value); + set => RaiseAndSetIfChanged(ref _computeIslands, value); } public bool ComputeOverhangs { get => _computeOverhangs; - set => this.RaiseAndSetIfChanged(ref _computeOverhangs, value); + set => RaiseAndSetIfChanged(ref _computeOverhangs, value); } public bool ComputeResinTraps { get => _computeResinTraps; - set => this.RaiseAndSetIfChanged(ref _computeResinTraps, value); + set => RaiseAndSetIfChanged(ref _computeResinTraps, value); } public bool ComputeTouchingBounds { get => _computeTouchingBounds; - set => this.RaiseAndSetIfChanged(ref _computeTouchingBounds, value); + set => RaiseAndSetIfChanged(ref _computeTouchingBounds, value); } public bool ComputeEmptyLayers { get => _computeEmptyLayers; - set => this.RaiseAndSetIfChanged(ref _computeEmptyLayers, value); + set => RaiseAndSetIfChanged(ref _computeEmptyLayers, value); + } + + public bool IslandEnhancedDetection + { + get => _islandEnhancedDetection; + set => RaiseAndSetIfChanged(ref _islandEnhancedDetection, value); } public bool IslandAllowDiagonalBonds { get => _islandAllowDiagonalBonds; - set => this.RaiseAndSetIfChanged(ref _islandAllowDiagonalBonds, value); + set => RaiseAndSetIfChanged(ref _islandAllowDiagonalBonds, value); } public byte IslandBinaryThreshold { get => _islandBinaryThreshold; - set => this.RaiseAndSetIfChanged(ref _islandBinaryThreshold, value); + set => RaiseAndSetIfChanged(ref _islandBinaryThreshold, value); } public byte IslandRequiredAreaToProcessCheck { get => _islandRequiredAreaToProcessCheck; - set => this.RaiseAndSetIfChanged(ref _islandRequiredAreaToProcessCheck, value); + set => RaiseAndSetIfChanged(ref _islandRequiredAreaToProcessCheck, value); } public decimal IslandRequiredPixelsToSupportMultiplier { get => _islandRequiredPixelsToSupportMultiplier; - set => this.RaiseAndSetIfChanged(ref _islandRequiredPixelsToSupportMultiplier, value); + set => RaiseAndSetIfChanged(ref _islandRequiredPixelsToSupportMultiplier, value); } public byte IslandRequiredPixelsToSupport { get => _islandRequiredPixelsToSupport; - set => this.RaiseAndSetIfChanged(ref _islandRequiredPixelsToSupport, value); + set => RaiseAndSetIfChanged(ref _islandRequiredPixelsToSupport, value); } public byte IslandRequiredPixelBrightnessToProcessCheck { get => _islandRequiredPixelBrightnessToProcessCheck; - set => this.RaiseAndSetIfChanged(ref _islandRequiredPixelBrightnessToProcessCheck, value); + set => RaiseAndSetIfChanged(ref _islandRequiredPixelBrightnessToProcessCheck, value); } public byte IslandRequiredPixelBrightnessToSupport { get => _islandRequiredPixelBrightnessToSupport; - set => this.RaiseAndSetIfChanged(ref _islandRequiredPixelBrightnessToSupport, value); + set => RaiseAndSetIfChanged(ref _islandRequiredPixelBrightnessToSupport, value); } public bool OverhangIndependentFromIslands { get => _overhangIndependentFromIslands; - set => this.RaiseAndSetIfChanged(ref _overhangIndependentFromIslands, value); + set => RaiseAndSetIfChanged(ref _overhangIndependentFromIslands, value); } public byte OverhangErodeIterations { get => _overhangErodeIterations; - set => this.RaiseAndSetIfChanged(ref _overhangErodeIterations, value); + set => RaiseAndSetIfChanged(ref _overhangErodeIterations, value); } public byte ResinTrapBinaryThreshold { get => _resinTrapBinaryThreshold; - set => this.RaiseAndSetIfChanged(ref _resinTrapBinaryThreshold, value); + set => RaiseAndSetIfChanged(ref _resinTrapBinaryThreshold, value); } public byte ResinTrapRequiredAreaToProcessCheck { get => _resinTrapRequiredAreaToProcessCheck; - set => this.RaiseAndSetIfChanged(ref _resinTrapRequiredAreaToProcessCheck, value); + set => RaiseAndSetIfChanged(ref _resinTrapRequiredAreaToProcessCheck, value); } public byte ResinTrapRequiredBlackPixelsToDrain { get => _resinTrapRequiredBlackPixelsToDrain; - set => this.RaiseAndSetIfChanged(ref _resinTrapRequiredBlackPixelsToDrain, value); + set => RaiseAndSetIfChanged(ref _resinTrapRequiredBlackPixelsToDrain, value); } public byte ResinTrapMaximumPixelBrightnessToDrain { get => _resinTrapMaximumPixelBrightnessToDrain; - set => this.RaiseAndSetIfChanged(ref _resinTrapMaximumPixelBrightnessToDrain, value); + set => RaiseAndSetIfChanged(ref _resinTrapMaximumPixelBrightnessToDrain, value); } public byte TouchingBoundMinimumPixelBrightness @@ -784,8 +791,8 @@ namespace UVtools.WPF get => _addPixelColor; set { - this.RaiseAndSetIfChanged(ref _addPixelColor, value); - this.RaisePropertyChanged(nameof(AddPixelBrush)); + RaiseAndSetIfChanged(ref _addPixelColor, value); + RaisePropertyChanged(nameof(AddPixelBrush)); } } @@ -801,8 +808,8 @@ namespace UVtools.WPF get => _addPixelHighlightColor; set { - this.RaiseAndSetIfChanged(ref _addPixelHighlightColor, value); - this.RaisePropertyChanged(nameof(AddPixelHighlightBrush)); + RaiseAndSetIfChanged(ref _addPixelHighlightColor, value); + RaisePropertyChanged(nameof(AddPixelHighlightBrush)); } } @@ -818,8 +825,8 @@ namespace UVtools.WPF get => _removePixelColor; set { - this.RaiseAndSetIfChanged(ref _removePixelColor, value); - this.RaisePropertyChanged(nameof(RemovePixelBrush)); + RaiseAndSetIfChanged(ref _removePixelColor, value); + RaisePropertyChanged(nameof(RemovePixelBrush)); } } @@ -835,8 +842,8 @@ namespace UVtools.WPF get => _removePixelHighlightColor; set { - this.RaiseAndSetIfChanged(ref _removePixelHighlightColor, value); - this.RaisePropertyChanged(nameof(RemovePixelHighlightBrush)); + RaiseAndSetIfChanged(ref _removePixelHighlightColor, value); + RaisePropertyChanged(nameof(RemovePixelHighlightBrush)); } } @@ -852,8 +859,8 @@ namespace UVtools.WPF get => _supportsColor; set { - this.RaiseAndSetIfChanged(ref _supportsColor, value); - this.RaisePropertyChanged(nameof(SupportsBrush)); + RaiseAndSetIfChanged(ref _supportsColor, value); + RaisePropertyChanged(nameof(SupportsBrush)); } } @@ -869,8 +876,8 @@ namespace UVtools.WPF get => _supportsHighlightColor; set { - this.RaiseAndSetIfChanged(ref _supportsHighlightColor, value); - this.RaisePropertyChanged(nameof(SupportsHighlightBrush)); + RaiseAndSetIfChanged(ref _supportsHighlightColor, value); + RaisePropertyChanged(nameof(SupportsHighlightBrush)); } } @@ -886,8 +893,8 @@ namespace UVtools.WPF get => _drainHoleColor; set { - this.RaiseAndSetIfChanged(ref _drainHoleColor, value); - this.RaisePropertyChanged(nameof(DrainHoleBrush)); + RaiseAndSetIfChanged(ref _drainHoleColor, value); + RaisePropertyChanged(nameof(DrainHoleBrush)); } } @@ -903,8 +910,8 @@ namespace UVtools.WPF get => _drainHoleHighlightColor; set { - this.RaiseAndSetIfChanged(ref _drainHoleHighlightColor, value); - this.RaisePropertyChanged(nameof(DrainHoleHighlightBrush)); + RaiseAndSetIfChanged(ref _drainHoleHighlightColor, value); + RaisePropertyChanged(nameof(DrainHoleHighlightBrush)); } } @@ -920,8 +927,8 @@ namespace UVtools.WPF get => _cursorColor; set { - this.RaiseAndSetIfChanged(ref _cursorColor, value); - this.RaisePropertyChanged(nameof(CursorBrush)); + RaiseAndSetIfChanged(ref _cursorColor, value); + RaisePropertyChanged(nameof(CursorBrush)); } } @@ -935,13 +942,13 @@ namespace UVtools.WPF public bool PartialUpdateIslandsOnEditing { get => _partialUpdateIslandsOnEditing; - set => this.RaiseAndSetIfChanged(ref _partialUpdateIslandsOnEditing, value); + set => RaiseAndSetIfChanged(ref _partialUpdateIslandsOnEditing, value); } public bool CloseEditorOnApply { get => _closeEditorOnApply; - set => this.RaiseAndSetIfChanged(ref _closeEditorOnApply, value); + set => RaiseAndSetIfChanged(ref _closeEditorOnApply, value); } public PixelEditorUserSettings Clone() @@ -966,43 +973,43 @@ namespace UVtools.WPF public bool RepairIslands { get => _repairIslands; - set => this.RaiseAndSetIfChanged(ref _repairIslands, value); + set => RaiseAndSetIfChanged(ref _repairIslands, value); } public bool RepairResinTraps { get => _repairResinTraps; - set => this.RaiseAndSetIfChanged(ref _repairResinTraps, value); + set => RaiseAndSetIfChanged(ref _repairResinTraps, value); } public bool RemoveEmptyLayers { get => _removeEmptyLayers; - set => this.RaiseAndSetIfChanged(ref _removeEmptyLayers, value); + set => RaiseAndSetIfChanged(ref _removeEmptyLayers, value); } public byte RemoveIslandsBelowEqualPixels { get => _removeIslandsBelowEqualPixels; - set => this.RaiseAndSetIfChanged(ref _removeIslandsBelowEqualPixels, value); + set => RaiseAndSetIfChanged(ref _removeIslandsBelowEqualPixels, value); } public ushort RemoveIslandsRecursiveIterations { get => _removeIslandsRecursiveIterations; - set => this.RaiseAndSetIfChanged(ref _removeIslandsRecursiveIterations, value); + set => RaiseAndSetIfChanged(ref _removeIslandsRecursiveIterations, value); } public byte ClosingIterations { get => _closingIterations; - set => this.RaiseAndSetIfChanged(ref _closingIterations, value); + set => RaiseAndSetIfChanged(ref _closingIterations, value); } public byte OpeningIterations { get => _openingIterations; - set => this.RaiseAndSetIfChanged(ref _openingIterations, value); + set => RaiseAndSetIfChanged(ref _openingIterations, value); } public LayerRepairUserSettings Clone() @@ -1109,7 +1116,7 @@ namespace UVtools.WPF public ushort SettingsVersion { get => _settingsVersion; - set => this.RaiseAndSetIfChanged(ref _settingsVersion, value); + set => RaiseAndSetIfChanged(ref _settingsVersion, value); } /// <summary> @@ -1119,7 +1126,7 @@ namespace UVtools.WPF public string AppVersion { get => _appVersion ??= App.Version.ToString(); - set => this.RaiseAndSetIfChanged(ref _appVersion, value); + set => RaiseAndSetIfChanged(ref _appVersion, value); } /// <summary> @@ -1128,7 +1135,7 @@ namespace UVtools.WPF public uint SavesCount { get => _savesCount; - set => this.RaiseAndSetIfChanged(ref _savesCount, value); + set => RaiseAndSetIfChanged(ref _savesCount, value); } /// <summary> @@ -1137,7 +1144,7 @@ namespace UVtools.WPF public DateTime ModifiedDateTime { get => _modifiedDateTime; - set => this.RaiseAndSetIfChanged(ref _modifiedDateTime, value); + set => RaiseAndSetIfChanged(ref _modifiedDateTime, value); } #endregion diff --git a/UVtools.WPF/Windows/AboutWindow.axaml b/UVtools.WPF/Windows/AboutWindow.axaml index bb20424..474155d 100644 --- a/UVtools.WPF/Windows/AboutWindow.axaml +++ b/UVtools.WPF/Windows/AboutWindow.axaml @@ -12,7 +12,68 @@ <StackPanel Orientation="Vertical"> <StackPanel VerticalAlignment="Center" Orientation="Horizontal"> - <Image Margin="20,0,0,0" Source="/Assets/Icons/UVtools_alt.ico" Width="256"/> + <Border Margin="20,20,0,20"> + <StackPanel Spacing="5"> + <Image Margin="0,0,0,15" HorizontalAlignment="Center" Source="/Assets/Icons/UVtools_alt.ico" Width="256"/> + <TextBox + Text="{Binding OSDescription}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Operative System:" + UseFloatingWatermark="True"/> + + <TextBox + Text="{Binding FrameworkDescription}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Framework:" + UseFloatingWatermark="True"/> + + <TextBox + Text="{Binding ProcessorCount}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Processor Count:" + UseFloatingWatermark="True"/> + + <TextBox + Text="{Binding ScreensDescription}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Screens, resolution, working area, usable area:" + UseFloatingWatermark="True"/> + + <!-- + <TextBox + Text="{Binding ScreenResolution}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Resolution:" + UseFloatingWatermark="True"/> + + <TextBox + Text="{Binding WorkingArea}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Working Area:" + UseFloatingWatermark="True"/> + + <TextBox + Text="{Binding RealWorkingArea}" + IsReadOnly="True" + BorderBrush="Transparent" + CaretBrush="Transparent" + Watermark="Real Working Area:" + UseFloatingWatermark="True"/> + --> + </StackPanel> + </Border> <Grid RowDefinitions="Auto,10,Auto,10,Auto,10,Auto,10,*" Margin="20" diff --git a/UVtools.WPF/Windows/AboutWindow.axaml.cs b/UVtools.WPF/Windows/AboutWindow.axaml.cs index 61939ce..740d0f5 100644 --- a/UVtools.WPF/Windows/AboutWindow.axaml.cs +++ b/UVtools.WPF/Windows/AboutWindow.axaml.cs @@ -1,4 +1,8 @@ -using Avalonia.Markup.Xaml; +using System; +using System.Runtime.InteropServices; +using System.Text; +using Avalonia; +using Avalonia.Markup.Xaml; using UVtools.Core; using UVtools.WPF.Controls; @@ -7,16 +11,40 @@ namespace UVtools.WPF.Windows public class AboutWindow : WindowEx { public string Software => About.Software; - public string Version => $"Version: {App.VersionStr}"; + public string Version => $"Version: {App.VersionStr} {RuntimeInformation.ProcessArchitecture}"; public string Copyright => App.AssemblyCopyright; public string Company => App.AssemblyCompany; public string Description => App.AssemblyDescription; + public string OSDescription => $"{RuntimeInformation.OSDescription} {RuntimeInformation.OSArchitecture}"; + public string FrameworkDescription => RuntimeInformation.FrameworkDescription; + public int ProcessorCount => Environment.ProcessorCount; + public int ScreenCount => Screens.ScreenCount; + public string ScreenResolution => $"{Screens.Primary.Bounds.Width} x {Screens.Primary.Bounds.Height} @ {Screens.Primary.PixelDensity*100}%"; + public string WorkingArea => $"{Screens.Primary.WorkingArea.Width} x {Screens.Primary.WorkingArea.Height}"; + public string RealWorkingArea => $"{Math.Round(Screens.Primary.WorkingArea.Width / Screens.Primary.PixelDensity)} x {Math.Round(Screens.Primary.WorkingArea.Height / Screens.Primary.PixelDensity)}"; + + public string ScreensDescription + { + get + { + var result = new StringBuilder(); + for (int i = 0; i < Screens.All.Count; i++) + { + var screen = Screens.All[i]; + result.AppendLine($"{i+1}: {screen.Bounds.Width} x {screen.Bounds.Height} @ {screen.PixelDensity * 100}%"); + result.AppendLine($" WA: {screen.WorkingArea.Width} x {screen.WorkingArea.Height} UA: {Math.Round(screen.WorkingArea.Width / screen.PixelDensity)} x {Math.Round(screen.WorkingArea.Height / screen.PixelDensity)}"); + } + return result.ToString().TrimEnd(); + } + } + public AboutWindow() { InitializeComponent(); DataContext = this; + Environment.OSVersion.Version.ToString(); } private void InitializeComponent() diff --git a/UVtools.WPF/Windows/SettingsWindow.axaml b/UVtools.WPF/Windows/SettingsWindow.axaml index 4182b2b..f0d20ff 100644 --- a/UVtools.WPF/Windows/SettingsWindow.axaml +++ b/UVtools.WPF/Windows/SettingsWindow.axaml @@ -659,7 +659,16 @@ <StackPanel Orientation="Vertical"> <TextBlock Padding="10" Background="LightBlue" FontWeight="Bold" Text="Islands"/> + <CheckBox Margin="15" + Content="Enhance island detection with an combined overhang check" + IsChecked="{Binding Settings.Issues.IslandEnhancedDetection}" + ToolTip.Tip="Combines the island and overhang detections for a better and more realistic detection, also to discard false-positives. (Slower) +
If enabled, and when a island is found, it will check for overhangs on that same island, if no overhang found then the island will be discarded and considered safe, otherwise it will flag as an island issue. +
Note: Overhangs settings will be used to configure the detection. Enabling Overhangs is not required for this procedure to work." + /> + + <CheckBox Margin="15,0,15,15" Content="Allow diagonal bonds during island detection" IsChecked="{Binding Settings.Issues.IslandAllowDiagonalBonds}" ToolTip.Tip="If enabled, components touching by even a single diagonal bond will be considered a single component for the purposes of island detection. |