[or-cvs] r11078: improved the event concept, added fully automatic long-term (in puppetor/trunk: . doc src/de/uniba/wiai/lspi/puppetor src/de/uniba/wiai/lspi/puppetor/examples src/de/uniba/wiai/lspi/puppetor/impl)

kloesing at seul.org kloesing at seul.org
Sat Aug 11 15:39:12 UTC 2007


Author: kloesing
Date: 2007-08-11 11:39:12 -0400 (Sat, 11 Aug 2007)
New Revision: 11078

Added:
   puppetor/trunk/LICENSE
   puppetor/trunk/README
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventImpl.java
Removed:
   puppetor/trunk/doc/example.png
   puppetor/trunk/doc/howto.aux
   puppetor/trunk/doc/howto.dvi
   puppetor/trunk/license
   puppetor/trunk/readme
Modified:
   puppetor/trunk/doc/howto.pdf
   puppetor/trunk/doc/howto.tex
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Event.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventManager.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventSource.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Network.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NetworkState.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeState.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ProxyNode.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/RouterNode.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/DistributedStorage.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/DirectoryNodeImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventManagerImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/RouterNodeImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java
Log:
improved the event concept, added fully automatic long-term test for distributed rend descriptor storage

Copied: puppetor/trunk/LICENSE (from rev 11077, puppetor/trunk/license)
===================================================================
--- puppetor/trunk/LICENSE	                        (rev 0)
+++ puppetor/trunk/LICENSE	2007-08-11 15:39:12 UTC (rev 11078)
@@ -0,0 +1,66 @@
+===============================================================================
+PuppeTor - A Java-based Tor Simulator - is distributed under this license:
+
+Copyright (c) 2007, Karsten Loesing
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+    * Neither the names of the copyright owners nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+===============================================================================
+The Tor controller demonstration code is distributed under this license:
+
+Copyright (c) 2005, Nick Mathewson, Roger Dingledine
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+    * Neither the names of the copyright owners nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Copied: puppetor/trunk/README (from rev 11077, puppetor/trunk/readme)
===================================================================
--- puppetor/trunk/README	                        (rev 0)
+++ puppetor/trunk/README	2007-08-11 15:39:12 UTC (rev 11078)
@@ -0,0 +1,8 @@
+This is a Java framework that facilitates the configuration of a set of local
+Tor processes and the execution of automatic tests based on these processes. The
+intention is to make it easier for developers to analyze Tor's behavior in
+arbitrary network settings and to measure the effects of changes to the Tor
+source code. Due to the automation of configuration and execution, these
+experiments can be done in an unsupervised batch fashion.
+
+For more information, read the how-to document in doc/howto.pdf .

Deleted: puppetor/trunk/doc/example.png
===================================================================
(Binary files differ)

Deleted: puppetor/trunk/doc/howto.aux
===================================================================
--- puppetor/trunk/doc/howto.aux	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/doc/howto.aux	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,12 +0,0 @@
-\relax 
-\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}}
-\@writefile{toc}{\contentsline {section}{\numberline {2}Installation}{2}}
-\@writefile{toc}{\contentsline {section}{\numberline {3}Example 1: Accessing public Web server over Tor}{3}}
-\@writefile{toc}{\contentsline {section}{\numberline {4}Example 2: Advertising hidden service to public Tor network}{5}}
-\@writefile{toc}{\contentsline {section}{\numberline {5}Example 3: Advertising and accessing hidden service over public Tor network}{6}}
-\@writefile{toc}{\contentsline {section}{\numberline {6}Example 4: Advertising and accessing hidden service over private Tor network}{8}}
-\@writefile{toc}{\contentsline {section}{\numberline {7}Example 5: Beta test of distributed storage for hidden service descriptors}{10}}
-\newlabel{ex5}{{7}{11}}
-\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Network setting of example 5.}}{11}}
-\@writefile{toc}{\contentsline {section}{\numberline {8}Architecture}{11}}
-\@writefile{toc}{\contentsline {section}{\numberline {9}Known issues}{12}}

Deleted: puppetor/trunk/doc/howto.dvi
===================================================================
(Binary files differ)

Modified: puppetor/trunk/doc/howto.pdf
===================================================================
--- puppetor/trunk/doc/howto.pdf	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/doc/howto.pdf	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,2830 +1,1572 @@
 %PDF-1.4
-3 0 obj <<
-/Length 2573      
-/Filter /FlateDecode
->>
+%Ç쏢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
 stream
-xÚ•XKsã6¾ûWð²Êd|å´“Êf7sØÊV¼§$š‚$–)RáÃí¯ß~¤dyjö`F?¾îƏOßÿ¬ROå‘V©ñžöžÎU¤“¤ð2•FI©µ÷´ûÝÿu>ŸƒPg¾}
-òÂïåÁŸOŸ½0ÓQ’ÄÚµŠJ•Dþ)aÎÿ„ʯû¯Aªa¤üð¹펗Ué÷üÖœpn«iåžê(ÍËäšùFdk‡ïFÞù¹ÙY$‡«džÊ4Õx•PQªŠ¶QûiûK¦~5Œ“í¢¶‡Kå¾›îð78õpúÿ£Îâ	‰¨(Õi	<’ÈÔðø<·8ôQ>ò¯Žacœ³Ä0Qb2ÃÄQ®ð0:*cy(8CéÔÿ¥<Nzdæïæzjð»ï˜_á•Q™Wà“2
-—b8—l“£mŠJ›r/‹Ê	›LFÊ3/‰Àª‰ÿŽu)°¾n¨š­žƒéèç3³@cfËÌmUHao¸Ø/¼2ÁʱšV²ªF¢Fm3U“ÖÓÑò –++ÿX™ÃLœ§f`9óû=ÿÊÁ£Øˆ>–5±'qªZvÐ4ŽLfr0Ãâp¯ES¡òsÀªékâ:²‡¡€0W¡H;&Ž0¶<O¤_ø[ùõ<áÕHZ-Áo5£úID5ï¦ûÃF¦Ã°Ào9‡Ùd¨–E$6äÞ6FAhâÒ:R$ —l¯Ûthši‘•¿œ¸IÆv†ß©çßSõðiuâ_[Ñ‘ø­ÚËx·0¥m/>I~
-kt@î ¥Víå¿r„ä;‘㙬aìoÍ朆$Æ~†Ùf*ä~¹¾µ¢[wvÂíoˆ+=Rg&)‰²NSƒ2Eœ:D¥4&	qâ$·%?´<·˜Ç¼4!NõbHdŽ†ÇßOEòª;X9ƒY+vy87tbõt\-gpH"w6ºgÙŸf‘¨T̾ŒW)a®Âõ©?I á2IX”_‹7\f…ÀཟӦGô8ãcOÄ#í—Ó7äý–½nd!8D»{Wz^v'‰ñwt–| í“$Á}ô‹"wã,Ç
-¯‹!\Eÿ¨&±Í
-‘šQh¾kàº4æÚ}>¡§¡"έÄîƽ¬NŒq0Zb]n8‹§ñ2!mh$€èø²qª¿-À	ÊæE?¤;ð©¡(‘„œ1ðúz¬f’Ìul¸Cg6&fœZѱÔ£ãà-|xc›˜aô˜à®Õ}w±‹7fzï¸Ø°£÷A©¢86W~_QËWÁ§½K#Ÿé¿nvÎ!aþmQ<kòx³-Œãä«–ÇcÕ¶rÁæ£z°Õ$Œ*ö÷²Á3uígÂ".^ˆ>M6žhKù"_½ƒ0Ng¥#X]°ÐçyJjÀÍU0>£užÛ¦vDr–sŠ‘EgҁÅWò<s«†õ .#hf—[Pí&:þÕóQ¡Q©S?Ž?F8£Œƒjø¸>m³L{¯oÞ˜FÜN-[Á„Í
-ª¶oÐÁq''ìGNhX#á¤Ó~0°Wã<¬bLkFd¦Xœ•þŠ¯Ô ´|9Ü!³3V4MglŠ®%ÃÞ±}? …MW­Iðl?`iŠ£M$˜;:Yã1›¢ïQa˜n\?ÆK,õñéªò`ã[C‰æ…•¯÷wÀ¬ 
-ÿg”Špnö˜wîèŒm-€sW8ÆÜ£àlÏ/Lh—ˆ…6T,±Øô-XžJ+-‹”Õió56ª$̃NuJ‹6`ÀÔS…?ç#ÙSI (|Û¥Ï3öžd
--Ï“¥¨RØ>¢wWèÃn{BNš°öÖHgÀ”31A›Æp¤HÒÍK€s‹l²¾_Ûg á
-ûEB/´·,ñóÚY$ÁÍ:•ÆšÐôU°ËÂÒyyÕ¥«,•%Ðf<­"-Á<ÊVÊá‰Ôž8Qo“D.½áì3{& ¯â·ER~é +xœÅ\I“·
+Îyâñny/¥×"	®>%Îf9KÙɤrHå idÉ¥ñŒlK²•_€Àn¶4Š£¸\eõt7Iëý¾9¨EýWÿ}üõÅý¿†ÃÓï.ò݃>ü±_=¿øæB×?T}ûðÉ%H£=\~y¡ëë&èżwøÃå×ÿ<~~RKt	R<¾:™Eiáø"_9ðêlÜAûãºu´ÇËSp‹ÖŽ·§³^,Äã·t>%ø×åggoR8œÆÁ).¯p­_ŸÎ +qÏOù…äÑ>Q„ÞøD$©ÅÛ+F9Ü£K¥¥È)0H>¾YÆhëœ8™'rÊØãS¦äWyŸÑ»á.JlIÆ‚=þ€3Eo -Ï3IL¥ ˜ƒòÑFòECL©ÊŠk¼x5£åU›v`	€&k:j~Q\Þ£%
+ßU›Kåí1ô»U~pÐvë«üp0‡³Å½»f_¸”Ö(Ù`ÁR©›Ð5íUÒëŠLG®ù,Ò)$™®a,í/_j$å1±=ð®Î`µCY*š²$TT´`­Ç•Ú˜J³;$T}ã³B6bóåŸ..IŽçìq†ÌH²èkøêlÈzQO²ÌU­9zD2:¥HVòm¾4Jźf8x=DGkZô6MßX¤äo3
+=ñ2 ×ꯓFk\v5ÆG$XgÛè5QwэÙEÙ˜-9„FtcŽ^D†Ð›xqЗ¨&”7b㲕Ñ>bÈJlLp¾mØD8~BôÕpê‹bôsœ7¨€$KE+:>ËL4.‰É_íÝ­dðãÇeEgbݯMAg³-[g&ð2rrºçl’”gn…%E?%í	=öèÙc[œ•M&ÚuÓUá£~õ”³Î°ø+Iù9¯É´3IMyì —ü’hB£0©Øé⤙ɓSöè “óL³~tÎڝ©
+•ÊKÔ5ã¡íYÁ@t5GP”ѸÐY×ÀQ´ß­•ß¡ø Œ§²Dƒnk:×…Lv$LŠ·'7*БtÓª,ò&, Â®˜ÑOÑî…nü=›åÚ]Ò<¡,]Ö-¡˜ƒš`pu覅t‰ù=eˆBI_uš˜ÎÛ‰ñ½C‡Óz¨Ör»b•‡<š('樀¦íK,#ƈ™®&»©ÌÖ´zÑÅ„Ù¦‹ß…!²X‹0ÜFW4†¹¦+è¥~>áË·èÊøxÁ«hOÃâTÅg}M“½í¢+:³ûæ„سËÌ£ì…nÖ‡ÝÃÐ㍵u­|s+wŽ¾3vQú¢YpŒêE%<HO÷üDHN½Í¼„Ñ9âM\'X)€¹¨y”xµYs^zpü™84¦«5/Ie^uøæ°úõÄýÕàêÃzñWˆ7:-QùÑZ
+odÔº™^òM1tœæßLfg]j-šyxûEQr‹± )y£Í 5åmD=è»_IoÜÄÒØÞ-ž“Ò@"0#%(¨cc®©°K¹$
+«Ž÷ÊÉ»•9ˆqŠÔm"€C¨…™SÞíÍZÐ6˵ÙaBQñ˜9"|+1°Måd˜5ˆLl”eƒvU@ˆ6ɍ轅¾uú:-𘥔¦j?ä؇
+°q=ì(,5z±^Šx•ÕHӐÿI7âæôŒ2G`júJÒBÕ1¦wVc†8Ûöý=glálÂϪÄ-í§À”zÎ#<+	1jéÉ”êÒ^d…ñSï¥ç‚ßgš5™dã6ÒÒMÄhË™Oà÷PuÞs.èOpÕ¶N@“Î3Û©/ᛟΞ\±›ì¹,…|ÒiˆRoNÑP	6R”A²DëVä
+yü¹æŽf"Ø–v#gf˜N‚ßìD¬ž‡P^þ¶è¥G¨zd„”Íi _w”£¥Äx×HŸröÐŒô`!\6KЋ6W2G+ã4¦­Í
+~	¾‹_]MÞ@wHÓð1“=§˜W¡Ÿ¯Éìd“ä±<ôWq™†K'È£¥gÃÁ)#éú³k›*V»§“ÉïÕrIx'²zCä’m
+ª8+)¬`z~À^k)¸
+•ç/ÝOæ°a´§"ë®oä<cmªÌ‹àú¢w’nÅ<	ã{¹è÷Q@~Á›÷IÎÎ&ºõ¤³3àM|ò^V4iEís・miŽ¤†RÆä@cuL~X]¿ÇÛ5uŸ.Ú
+(É͝ëæèe­š_Ó\ÿðs…=~ÓÍèÕ̏¯%Ò
+Uù^uíeݵojk+S[˜æí–Q©žà£Ï…ò±´›”GÈŒ®Šøà™#š¡·)Ÿg<  €”hW+07“²Ù`É	#k_lB÷ê¦Öçw9‡·é-è:9Ìvj&ïy‘«àS[fo% )ðR	qԔÝ+8·Òë´ÕpžÅÝ	­$uËV&R²MF„‘'Sç¿®ª2»6\,<¤§TÐk¤[oG'VKD.<<3G@ò™‰LËŽ-Q3åMëgò¤!zQ­l'T׃™g@ˆ+²{·É
+ªÖ-ám!$׆µ!|žËÓ—Ò0@<ÛÙݦäËdü»¢jU“%½ru‡Ú`ÞÙP8àÂI¡ÌÅ(_jZ•/úQw³òAšyçõqW¥{D%¿?ÑIU~^ Y#Åz$¶
+oô&•´Y`v(ªšè»•ÂÿϸcE‘3r°aD>jí&Åê?ãìÔìköˍ?Þ¼LÂlƁ?SRæ^¤+ ¾¼·ê|èÛž?@{Eš¡:^wÖ½ûž®’Ec0ÞibŒ»ÉÂnåeÛé#|¿x“aÍõ¯
+a-Ý*fm£‘n5'j˜¶ž©¨J]¦gíÛ›7jS8·Mé·yz>5ÜI`Úãìÿ(#²¹ªðÓ7œ¿˜xލ—’ ®‚¡NK”ºénq6	m™õ¾ë(¹E,3="W‰$éÒ¯×ÃÈwŸ…ü?ÔaJ+oÅÔs c÷ñªÃЁÐáœÐÚ÷šŒòÞ„k ÈæN5<K
+†´yÓQVâN9½÷;ꝿ_°NËãIù$/k|¹C=!„Ò5/W
+¶ÔmÓí7§pHõvÛmj.ÿ_÷QîV¶&ùqCwðûäƒûñ-G9xE³âf*/ûÙUH«>Ò¡¶›,ê®ME98['ÃÓ{6å³FYïé[ÛÝl>&õ†‰Ÿm¯ö“H?O‡VR‹nÓ…½Cü&àµñtV–Q@ù´6¹AèYñC¿f‘Ë̏¦Õ›y’ÚÚ)ôÿàT«©¯úæj£ÂÞ‰t>ðh©j†ÝQf´D&%NxuÓà‡er;­Î<|šoRiÔåêQË2íüèþLQÀΡ׮êÙíé¹ëzO0ø`‚c‡hÎX#zðén¼n°˜b4À¼^(ɬwéjæàÈ­Bv‡SXÂnå~D„«ƒ±[Á„iÆ–>“s·Ý(áêû¬I5¯«#5Kâ†|Apv¨”lð(‡n‡zCN/‰¯óÌOºkÇ/c#áD«ã3!•\_ ïž¦ÊêŸkö?XÃ05ÐÆý€_†çëÌœD[6§¿'&ûèÕ|¢2ë[Kz5)·?Öªw 2€«Þ¥+Å•üEÍóÜö§ßEƒù&é“
+”J=$zÈ·$1Ï«~•ï%ÊÇN˜ë$¿¦&„Å=¾¢•1çªyêëÂGÆ„'œFÛ&‡uã]>«jž6K9Ã)CŸOó›LU14ä¹•l€0 ˆ^–»íê»}”tóÒÏO„S²¬SMªèŠ«4èÓ\’ówÀ]Pâìé7btµÊ-–MFƒ"m*ó+:Çwu§‰³fªËÚÅû¢í`Nå0÷úœ¶£Kø™½ÊJәщ†¦h&ÐàEúîñÊéBXè§
+Ä ±[iæEãƒÜáMK¿Ña¥¨^uk{Úéä+&©Óž³0Â=^º§GÅT}Κ=°µñ?mŒÊÆÂêqÕ5Cnòïv9³±bZ•o£iMmcé7kÅ{vº¼=ÈïãBòém1NP’s}Â=ó›¸Ø^_–Žo=rLåVi}ߺsViàº!_itn¨h¬aÑS¹ù;ÿ7©n=ò½bã>ëÃ6\½,ß	ÄÜmÔì–Žþé‡;r;F(>Uo~ñªOþ†ˆDaŒ[ä7k8PF®øl‚Š·%„ðºy6wþµœ6B3͇wÇn-Pïb«>"cÕG*¬õ‹ÎçBÍ6x¢"Óµ–lHÄ”Û	ÏÖbW=ˆ)ó'nÙuÅÁeß–
+õ§Ï‚$3²?­§Ãô#Cvek3ð4*8 ;‚+€w†@?84]Fí"Æ¥þÜ K”‰ïR¸ëZ'ÐÂ̦âxtW+\ÚãÙ™›ö©ýþMèÝ›ž|qñìêäendstream
 endobj
-2 0 obj <<
-/Type /Page
-/Contents 3 0 R
-/Resources 1 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-1 0 obj <<
-/Font << /F15 6 0 R /F16 9 0 R /F26 12 0 R /F8 15 0 R /F7 18 0 R /F18 21 0 R /F17 24 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-28 0 obj <<
-/Length 2407      
-/Filter /FlateDecode
->>
+6 0 obj
+4887
+endobj
+25 0 obj
+<</Length 26 0 R/Filter /FlateDecode>>
 stream
-xÚÅYKoãF¾Ï¯ð‘F¾Z$çæ,f°Î!dA²ŠlI½¦Ø\>ìñþú­WóaÓ{ÍÁÙ]]]ïúŠþéøáÓ×ì.÷óCt¸;žïB•ù‡TÝTêG±ŠïŽÕŸÞq—Åžívû8K½F»(óžwQŠk¡÷ˆë™W4”žBo,Þhw{ Õ»}è!ùÙv·¢‡W4ÓÜh»èÇNócƒw@ÕãÛÇÝ>	BïVàêË	fî¤Ù!1KÀ÷ŸŠ¡Dá®»¾îöaèçJ…¤Š=Q{½½¹ëáíŠ|GªêtÕó")¿ÃÕŽNœ	’‰jE‡‰Ä§k÷dÒ.‡‡Hìø+HÑBc×ë(nìw,G
-´-¼Ô¦,c…#®WšX—9ÍƬ˜™gã:><°í-îá00—g#z
-üŽ¶¾¹ï/]ÁžØ³>aâçIœ;kF¤Ð3ÚÍv>ø'TÞOÂ/J«…üðåŒÌVƒ«HQC7¦Á…Ä+0†žvJ¡Í#0Sq!q„ÞâÍO;Žԝ=wõ0Í…ß-^ù,é
-²ê_A˜\FÒ‘ì¼'HR;ËŠ¿Ùùì‘A¢‰xw‹íÐ&†aä‡éA­# K© ðÐJ
-ýÇXS-®Ã½JÏú¡(¶å¸ïd=¸à¢÷ÂÀÔÐÓ@VÊÒeµÑJ¶NÈø‹úYº}ÞגƤ©)P úÅ)šÆA¸ŽŒ)ªã·†Ç`ÃsžI5rõ+«»G0a‹ÄÆØÈ›U	ÖÙHt
-í˝•éÜ5å`»—÷$؈#r‘±Äÿ/
-,Z‡ƒ¤è¥ÌFZDC´ˆ†8À$÷üZLqÝ"gYxnôT	HaË«æÖÖë2JÛäÅ´¦”G=ÔÂü—JÛ€–&§-Ö\ZyS¶^…â"å—UâLe»²ë+…Lâ‡ÿ/ŸâU>%Pk#ÒPJ©Eò¨9Í™¢¶+ B¨"RÀ—áªåÒZž,ÿr…«ë¹¦ð:c¢ öX­î"j{á‡u›ÁÄ8Æ{»?-ÿ#ÆÕût¨vÙÇaÌuIwO¦œ‹sœ`xßÐoâõ€IkAYáBÃ8d‹È˜0#YY§8‡úÇRIå&æAöLDÊð/¡ ~£‡©”…É{ÕÞÌ
-·Å“YèÅé:µGíf˜(K¦ZFð*ñÎ|ˆJ2àqx‰ÀÃKt¥\ˆì(ø鋆I‹zÐ]Ã
-xy`žX.šOœY¾lM¢¨	Ïâ.ŽV)¡7]mvƒ¥\qⲌ]¦¶$Ò¡•DNS–TÜÖû<‘´ƒß~t½&c'ûbá8ød«„ßÄÕÔã×4$òa#]3“ó96•&ñ 	9‹YÑQ-:¤èá¤bÆ$ ÊKÂñjÓCÓ\æjúa;bœ³ˆÓrâ>QègQŸo¨F+Y4õ(EÂÿ H3zF`‘†B’=û^—ãP¸t%R´-~Y¸÷G‹Y®›ur×ýàa’>§z&,úºÁÈü…öÊ“™w®¼–Ú+}&Êù h©»ä	Wš\aî<œ¸*-\dƒA‘ÿi*˜>¿ó¨t´¬ý‹ž1¿þvÙ_ý»(Éü$‰ŒEƒD	Â_ŽþCŽªìendstream
+xœí\[o·~ò#ôxNa­—w2oI¢I‹ÆuEÓ˲e׶¤Ø‘÷×w†×!whÇІ²Ù³ä’Ùo¾¹¬~>^q¼â¿üßǯŽî?tÇoŽâÝcqüçzõâèç#‘ÿgÍO}
+„9K°ÒêãÓ§G"?/Œ_àŽ[Ý"á‡WGÿܝî½Z¼q»«ý‰Y¼Aí^ïOT‹\Íîr/íͪwOö'pKêÕî~ÙK·»ÊÝ»½T‹Ur
+—r]ýîLdL wÒÞå)¥	»søÞV·{œf—^å©‚ôíçõê¦^å1FzXÌ$`Ãaw½?‘r1^„²dœ4/Jµ{º×‹V«­‹†5‘Ÿ_í%ŒqÆn–<¼fWN/v¥cÈ+µ}¼G—Uãe[>y'µ™
+_u¹—f1AHØ(ˆS» ËœÊîîáqÙÅÂMºxáÇñäG	Çv–$cVQÖnà÷çûuqz]q—ÿ:ýþHz³c at _NÏA?á“aE‚ñeédkiAF
+Ìî­·»gåAœï¤Lx"dš’èÊS˜]ÉÅAöC~Oû±*ªŸ’vÑðÊgQÖ:"ÌQSP½ˆ"Y6MÂ7Jó÷š Ôº8Š&ëguÎöàM7OZ9§1Û÷)ú>”€„0Bpk¯Yâ‘éàD0ú*,®DIÊ?àlB;_áaK ›)otEÖ^G,UÍI°x—¥chÇ]Õ
+n6Q\Wá]×_Ödýƒ£¡°Q0<…öä#g\¯³‹
+’ˆœœ;±AbÄdÃmúÞPÊš­œ€×öffB1X˜@PØëÍ=YŸ¡hÕ6ÕDß®ž7‰
+bÄ%“)ßíOVø}UT¶¿$Û6+\Ö’àÐ.w•T‚ê8lK*ŠâYn2ƒmIƒØ•v%ƒ
+Û]áy±ðŸ¼
+Í»\0 t0Tz—!5xæ`¨]ðúÖN§­©mãUÎ=ПJ¾ÝÃ(p!¸z¡‰á‘e]Ô{Óg›‚E)˜W‚CF-ìÝ°D}wTK‰Tˆ–·M‘›ÙE™°(QÕøE.ÉÛÉô¸l…¿Uyže|Q¯.8ƒàU:-t5ÝBóô¶R(Ÿ´;¯½zÃ/kŽœˆ¬x&¨úÔ¿€Ã2°{AÔ™@vƒ´g¥ÀÕPp'?‡kb8åD–~Yôw'ÀrAºƒ'mÙ`›:ÀPcvßá	Á{…1Ñ$­ˆ€y=ú"¡D:W$3o›™7ßÀ}Þv´Ï{ƒ¨ ÇšŠú%ã`2@[''t²½h¼DÀ&Þlr Á>·«Çß¿¨Ö»áçÙSI÷Õí¼ú?ðßæ’#.Hßžd¬Մ/©'’ <ZlwŽfKIЉFâdÅîÛý‰]`ŽþžÎ5kÂñšÿ"[{Yo¶«Ê “Ãa…k<#B
+<"%O¹æ'0gdq'
+œ§íBBµ’váL‘±ªÞŸ$À‰±œïê¯ÑEÀ˸%„•Æ'E\qvf9à¦Ð+4\PoÂ’ä·5®l÷Úپā4	ÏóâA:êFœ	¬œHïMä!ÞD­a¡!
+ñœ/"ò#ïœäª—5¤¸9+CQµv¡+—Ä	ë2 ã&
+„Mî¡áæúEL€•TÄž„peNL](>Æô‡‹R]J†<ÙÏd ˜Lt¡¸½MvU[¢¸Œ:l5‡ªÃ#®nJZœ—»1ì½èÐJŒs
+ý}LLUuÍ«¨êJxwÜC£µ oÔ<ÝG_d:fÚ;$úº£å¬èž ‡ÕXËTz†î´0ôFëßï=ìR(²ú!‰Ò[HŠ”3™ÔÆ­‹WšçMcœÝçj:Kˆ9S jÄ–¼ƒR GȺ(ÒÒSšOì`cÊnA+f|&†1Êë}J,k<".°=½ÊÛ°ù§}U!γEu8[Ü–ð˜›ÌŸ8Ñܳwr`“2HxÓœ%®°uî*7!ƒpšœÚ95xÒ/GLÙì!+†Zót–Ç'BcYî|28 Ë®ËU’J¢DxU$Û¿ÈN7rûfèmªD |¬ô¢0P¹É׍,¼¢PT80.L‹žÖX¢îë&+ñé}=`tvq¾ÿk#¡]Y44¢hî†Ñ£ÂmHwÒá
+j’c ¥=;»ñ²C’8«n€FOCšçMùÎ3@¹ ¶Û\ËÀØ’Ûã
+¾“
+’†R1zZ„/ÑõÏ)içhclRè{o^Ô+	ÕÁ …uD;nmÑ¢ |§EœÒÏ45ÖÛƒÔŒÓc.õ;‰è(vIkiôPÁ´òZ’
+@í<{;PÞ¢›ÖnãàÆR}j&+@]¸³öå¡òʹn±I¥(-feìrÒÕ3(bÒÛôI:Ÿ3Œ1Q1fŠ6A,1‰–ä™–)%›'¨Ò§ú±u€Gö
+aQ×oSgÚ°zÏÏS^û>¼ª/\Ϧù®”ˁж’_Ï=Ø…ó,£©¶&ÍE¥p8ðRa¶–YÐ4éeMwïeVæõLO“8íbJm–Þ‹iŸev
+D¹ç+A¢ºYD¿ýiù¬²ìÑáäF§´O37åܹ68¶ÈÏö Ý–`/iâW0^ŠUê>U•Û'ƃeK#9)p0©ìb&™w5rs3+Gè|D6ÿššÛp„Žü¬<w÷VN·¼EX×Ø}ÿ{0%œú ö‰áÌPH|B©
+¡È|ƒÏÿÜPôfP/<k¾?ã0ë—Üð#=h’7³$þìú~AÝdVËs¼­YÄ„òFǦ¹Wï£$›ÍÂÁ»÷Ìî{°P)cötRûØ
+‡¡c!VÕô´À\¶ûMƒkÊg·«lJ‡æKSœ€4˜!CQRéH•!¦ü u›}‡+vø0õ c@Q#ùn»Çs·Ã¬Ï ¢JNµ¥ÕU=Û˜øȍÀˆ1/	5Zy-|ƒ6'\*Ê&>²R6ÓT1{HýAÁú‚ž)N.>ýÈ ÕY=íY£qyÛCß:%Uø˜:ÎÚ3b{KŸ—êó‹Ù„[„À›Dj‚
+i|íêgó
+õ6Þ…PüŠm˜‘Šxþf­W~ÓŽœûËViïD»^qÆ«Ý+éI3‹±J LÖÌ÷’#¢›C.&9®ÁJ2ÍìÙpdMý-¶®‘=ç58Ö<|Šù_Š¤‘Y%§‡%´ŠÉimjc–ÃÌnÑÉì”À­öÝ’õrî”âü£W*¸|66ÔÆÈ €Æ:E_©!aÖÆ|L“¶2MH€†iì[“fŒ²ò'•×š¡ôƒ‚ LÞt£ŠàD~
+šZ¬¹s‹ÏòR&éíbåÖ~æì„ðˆ±­•A;tsŽ¢ÝÓ´¥Uðgb½oPŒ+3l5Hù]3Õdâ4~úÅ/Nœä÷ãVLLC+Bö¥\‘°•ÑfZ)ÄÚ¾™<ýæ;æš
+kãç&ˆ¶m
+íK½>“«Ù4™e„½Ô)\r^óÑ«ëC×8Ô±Áõg`7sF#2añë¬Ãæ²mû–Äežª+2ŒÝSLN Û‹y^„nGõ„ùìçµ·},@ú™øR&÷¥sVC–×ûy­ã—_³-Y`fA³
+Ή\Õ„»Ü¾³2šTÇ/ÇPHö«úHøôU1 Øfo?Ýö‡‘©h endobj
-27 0 obj <<
-/Type /Page
-/Contents 28 0 R
-/Resources 26 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-26 0 obj <<
-/Font << /F8 15 0 R /F26 12 0 R /F27 31 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-34 0 obj <<
-/Length 2594      
-/Filter /FlateDecode
->>
+26 0 obj
+4713
+endobj
+32 0 obj
+<</Length 33 0 R/Filter /FlateDecode>>
 stream
-xÚ•YKÛ8¾÷¯0rYˆ‘zg±‡žA‚ì0“Ez±‡Éd‰¶¹-KŽ$w'ÿ~ëEJv;ƒÍ¥]$‹E²ê«—ú§‡»7ïu¾*Ã2ÓÙêa·RifE™¯²4uœÆ«‡æà¾y2ÃdGÛíï»æ¾®ÍˆôÛ4¦ûd†'[›ßåãyÛÚú¡~3Ós?<®ÿ|øeµÑQXj¯6J…eš*ùßê©ZoR›úÄÄÖvoÃðÍÔõÔ¾m¿Ú­iwcÂsg·Uøl+¶ãɆ§óéd`oh¾VÇSkƐ¶G—ÿï—ö©šÌåS at WÙJ%aœd•5¿,Öa¢ËŒŽˆ×p"<çüt$ÌzÇi Þ®7Iþdž>âËÖ<þϺLp‹
-¶8‘£pô´Ž5ÏÌدcš…VWê¨Ôðê<,c°-^éa]ÆA?ðŠ…¹7ž]«°-4e——7`5ƒxT1Ox<ÝG‚ë¾Ãƒ€cªÉ²æx	·ôÓ¼'yÍ‘R«ßÉog˜èàQpB³Vî¥U× ¡ƒ–—úGԏ}\èdBeY:î-£I%8E»Tçü@¸xþsDåÀ‹,Ò2œðUîûLoY8ë♺¦¡oyB ±&–ñ*,ó¸ ÅaY–j‡„3:&yy<ÌË]wæÊ£H±xÑH|‚‹üþ󯟮O¥!ðk¶ïFÿä©V—
-øg‡RV›az×·-=øÙ¢™ö¯Qå¹GžÎ3XAÅ·ÌÏ.‡Néì¼?àm"’YQtÅÆ8^D6R–a‚â=ÜfoÜ¢Ðo²«Kìyè%’9˜{X F>«8錃2ªïþêJ±¬Jï¬;â::”	TZÿ+g3²ƒ°ö"ùÑÛÎ[TÇÏe€-Fêï/UF–K®Ne‡‚€Ÿ‰Ã¦	ÕB3˜ª†qŽ3£$KXσó
-¸,æÍ>Ÿá-ËØw85y²G5GK.M4˜/g'sœBÔhÜ#²H€³–¨--K©Ûž@†û¹ïv–Ë[°êýGb¿ùŠ[”PH»ô] pîÊÆ8EÅq!ÖCâv)$‹bBÄ.º€‚WïWÞŠÌž+#à­	nHí$Ç[H_TTxD
-9˜'Û»˜ºR;Ïñ+S_£¤F»•F„¸»9p²Àý{wëTó­á×ó½–<{^l¬O•”ÃyvY¥/Bðë›­)G»tfÓ`.+5u´!σ¬»0ÛÇ°RWÚU¶ŠÂctÕpÎÉ}ìeW¢@Šø-³ÆkdÈ÷¹‘§AÐWAõ¨tŽç@÷®ªY4ª0M)~ñÁ`)²v³µ]ŠžÎ50²ÇÊïu³Û¼P'šS%ÜÀ†­k0æÝǹ-ŸŒ¿Ú
-KŽÒKt%ÇüQûéEÓÍ剝ƫ¶•3ÛEçZpD\û½æÛÇñňCuQ³Áh~nÞæ*/–ï0Ú§¨D(NþÖƒº1¸¥Qô#¡÷=öKÆ6|—ѨKnÏt©<>áqÍêÃ5—¾Ayýĸ*bº’)²õà\¢…pSõ‚Ø—ñØ»ã9Z5|†4\ÆX;Føæû%†ÇbŠvwVíFªHïFÁzí
-‚»ÄB+á´rÌUfšai¾q€¹ùÅvq10MË›\§.œ2s•/öO1¤n_œ&ùoÕÛÉ€]—'—!Šû¦ñ ,c…ûe"ÀYÛIK#yç(Ö"Á—3|Jå’}Ő£·dãVøk;Ôgp):	>xoc[ÜÌ.Þ…~ê©Œ\³¬.ã×ñãŇ|ÅL£ÝwdY’]i0û3áiðó>íñwÈ4åO6"œºgŠ”§Jé¾Jî×h_{Å>Ê:5–²ãÆc›¢áȃnV1‹Gê°p&ê‘búR…<>š½ã΍ÒÏóÜE7Ã<LϱKIjŽ£U¸¬¼`‰ ™|—þ~þ¡s*‰¬‹ïAÜNò5ëâ“Óå™Øݹ‚vuù{ªñ~ÁUY9ÓJrØÎzŸ™»þÎ}Åšk¸8¾{÷p§àAÑJ­T‡yV$+¥‹0
-µªw_îþø3Z5wÑê—»(ŒK¨öŸa…ª,õêx§ H
-»™öîÓÝ¿¼È—¹Y
-ý	ÿÏ£ŠU–y.á<	‹,³uei¶üLªòUœ‘¢OT¡½otX€Dâz÷´‹®üò$7T2¦>.¼Ê‰KÜÕñÓdŠ)mNØÛ¸<™âG=䧏œA`nìE(Tä)~ðAÁL3îàúïˆv<w¶®|ÖOùÆLÝ/Ý%¼‘ïRx¸Aö‹"/å;bÃÿŽvÒ«endstream
+xœí\[oGrÎ3a áÀ/á	ÄQß/ò°v´°v­½fà‡8”(ÉŠ$R–HYûïSÕ×êžšsHí:A€À€5왾U×å«KŸ_vb‘;ÿ•Ÿ½=yøg¿{ùá$µîäîíéõÉ/'²ü!Ê×»¯Ï¡ƒ
+»¸D§œÙ¿8‘å{iÍâÂο(xñöä?N·?3KÂûÓËôè£5§{ëóÞú¾·ÞôÖW½õÛzÕ[_æG/b™8µ’ÈÈÏö~!O­‘,ì¾÷f^vRR1ÀÇo[§WtþÚé’ÎÄŒôÃô>ôž’°vzE7Âtú×iEöôø]ëtÛŸ¶No¸Ý“9Ïûã5·æ'©Ñ+œþ?Ïÿp¢œ_ŒÀ;ç—À+ùЃ1æô×ô¥Ò
+"­Ý_·FæL…°hvgRå‘þ«sÇËuÐj¥XùYo%[yW>Ðöß> ¤¾ê­_õÖ…}|ØÙò†’ˆ;‚gì·oVƒå“™ÎYøj ‚=!42?$ú\²ò·ôÖ[v£¯æ©g
+“~e5mébÕ:‘ŠlôCÛÒ»^•ÅÈûÛÆ—¤‘<v±N¢vz?
+?ËʧþxÑFzKgbd…Õ$ËpLȸÿzrþÿ¯0ÿ¯*Ì÷ÜF?Nì’oX’·‘X÷„S˜Ï»Â¼i
+“ÞuëNV÷ºuÂþYê4‹6N¡)ïºT«Åäiô´‡‹7§ö
+>>¢$+V®…¶‡'8ZG>ä–û&-ÂD8\Ü­@†dÂg™jË£
+ºÒ[ËPRÚô(ÈÊ_^<Ìð®ÍÚçÚ¶AæïôxVNÆü	@¨øÄÒãuƒ¼ŽÇÇÀÅ	Ú°X¨&V7‚ÙxÆ‰‡…–ZŽ{ÕÚ¦*H/¯¨!=æ\ª@†	ËÞ [éÅ[Ù9±r¹@Ã[ûTþs”¹¯°Ñ.^ú¹yZ»à…Ó/ڐ„ä8qE(ŠªÉý§Îcyõ¿M즅å¸§£%ü²´Ö2Lł꘸ë°]% 4V¾Ù+" T§Ýu'mÙž-M•hÂÎ×}#}øNž—ýõíL3”СS¿Ÿ
+•T˜]‚9RGgŸ5ØÈxdžÊcR1‡€ò
+dÒN“/_dSä#ß½p †e^QT ¸$\Ù2§«.w¾¡TÁAH!!ÀëÌ]Öâf“¼{»Ähª¼çþBøB|z’¥Š]^êAXW"Œ]2!u at G©´e“¤'“Tf?“À^Í$ý}c-ÎŽÁ£àQWüÝþ́٦ürÝ¦jkŒtEg£¼#çQ)erf$À²Z„(Ÿïý'¤Q‹
+2ŽÆªöi•-ûð¦ƒMÁa€-w x“­=G¿ ’«Ÿú6™èë­QV#7åLìí˜ÿ„J at lúô›®ÉÿØ[Ƚü65 ¨#ëT½qTp Ø$nx` Ç¸,P\ÒځËàåpÂD®”(€ìÅÞ+¼å’oJ´ƒ†~î¦÷²Çy¿lqÞŸöýƒšcº“g囡¼ô—BUŠ`˜P¦`X™U»±ð±ŠC`ÛB´¦|À›å®æ.›ÎÁã5àžh;`ƒø<ƒCƒN+Œ‰¬“¢©QUd½‚IkÀøÊ«®ŒGΨ*ö4›UpÕÐ&aÁ}ѧ¿k¼ŠßYɇcàe¥éµK4Ðû4ÏyEÂ	xE4¸ušîœiBFVÑ
+3î^®˜ÆIDžW\å-y!Ñ.Ü—0wr´M$¸C at +%´¢TäÂRäü¶<¨ƒXƒ|ÙãSýidþ„æõ<í‚vY}±æue6¦^ñŒ®jô»‘
+[Åê1(j …#àÊ4è¡0ÑMe¿xÊ­`«0Ÿs!Jtæ4’¥Q)àXóçÐì³ø(=(fãÔ5²	;Zû¬žÄúÛAüú*˨M†LtÕcì³¼~9=¥E¹ëíËr€©Œ {ÙJƒÂÖ
+êÎ$*˜0)›*©ÉçùØAçç’enžŽxó¬.+™x'Š*þÛ@ÅÒºBaó·Ï{ë[™@ÖðÝ„®R1\ŸŽ"8‡\ïöP;6éÿ+§«âëî€úytõ±î­›_àÙúø`2ÖñÒMFsð@%’ÜÉä¡_å<°cP‰—’©Ã‚¾ÅO¯ÿü¯°±èF‚AS
+Ð+‹K79Ù©ÅčÍ¢3õROyk”–Ô`‚R€Gnøø\ô«wî>ü½xj)ÈPÙØÛJ|¦!Ki=0d‹¼,á¨àØ´‡FE|´iL½Bª8öµ#9¾	í—
+h¿o¡i0ÎBoÆ€™uìÔ‰…
+ËÃACö`Ø!õ=ÔRmå““V½'à®ÚûÙìÉBg%æhØ”Ëu×d©]{z5œ‹“CH¸¿îUÇÅ®9q8W2
+1;Þªî:eM8/Ô²͹º&,Z6w«@1Ia7ŠŒša#ìŠò]+˜áªyÍž\Œñ{¯ÆÀoYnSâ[![†7sq†C#ù8Ö[¼;à¶km™n¤u^Ì,õääQ”qJ1iÔtÛ¼š\ªÀX§!éµ²M‰ª—TgâD>×Î
+À"ð*|à[Æ=¿%²
+;2`p'£ÒRÓ‘È’¸"=6¹Bf'j–óä/_G°öžðvœLQ—ã•’ÅÑK[ö@EqÑKõBrÑåT.8•Åq>.‹¸[—­Ìa¬EB_¶·	oÒý!Oç)+8_Þ¥š¼Å“ß”K½CïϤÔ8øîcj<çŽ1é±r]6Õ]×&g~,wÂ8µß(ÈÊ9”\õ[k>°y¯‹y„ùƒ'óläî+kžÓjˆœöÖj[ë:•ÿº¸Ksý~+W#/+ŠÌ;k¬?äx¡hµÖ #T¯q-Ee`tlӝw?O®„QËFh¡ÝÈ*¤­ÔÿÞˆP.­"g~YbaÚóN©R˜+îªSâ‰“â/Ñ;´ôˆú-ÇicB'Gê¸X>‹ß‰Ðr¶äÍ`_‘pFæ÷F²¢F‚§÷d@±°¼'à™p7W<ZsFÀ£cª—¦©Í™U ©l€wXPÓŦõ)U¦ye	¥øèçŠÆ;Õîîç7o%Zä2'Ÿ‡;çâPÐ@Ó
+Ûc…a¹À€S¸îךÀ]6òÒG¬äòsH«î÷^¨Ti–BwŒ£¼Àý|3v-Ç´©Æu¯ö˜Ë’jª(GLô+µ%cÖ’qRœ2àoù<k]úˆW¸i¥¢#=ȶû‡h„þÚ§§«èïI§>ÒƒÞ	ïó#	„Ïò!Á’äÓŸ5.Ú˜åæ3)Ï~D_é‹hßÐÙP£·_Z-iKH––mþ±-ù§Û¨ëéDåæK;ðÞçƒÇ_¨÷¦­P:´ñL endobj
-33 0 obj <<
-/Type /Page
-/Contents 34 0 R
-/Resources 32 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-32 0 obj <<
-/Font << /F27 31 0 R /F26 12 0 R /F8 15 0 R /F14 37 0 R /F7 18 0 R /F18 21 0 R /F17 24 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-40 0 obj <<
-/Length 2495      
-/Filter /FlateDecode
->>
+33 0 obj
+5168
+endobj
+39 0 obj
+<</Length 40 0 R/Filter /FlateDecode>>
 stream
-xÚ­ÙrÛFò]_ÁòX%Ž1®låÁ‡œµãØŠEoj+ÉDB$V @ƒ iÕÖþ{ú˜:¶b=h3=Ý=ÓwóåüìùM‘„*œÌo&Rk…±™„A$”ôd¾üÝ+³æPÕ·b½ß~.›¼ø¼ýÃüà|:TàIþ`AþcúçüÝó7qŸ‰ÑÉd¦¤HdºÕTÅÞa:ÓÚxÕ~*½çÚ›OcíUöˆ2˜ŠpMz·| ‡éŽ§5ž-Kø——+Ô'þd&TH&•}k¦3h/ßáh¼f
-àÏEž•HÄÂ4ëÔÎyQàLyÛé-È 3ÎòÙÅP>ùø ]Wôš(VZ©£#…ù’-s®¨dkÐ`ðl`¯¶‚­ÜŽ.°Ø\	"è’Eþ‡/Í\”1>»( ÆéLœägC&ëlÑÆ´¥c1‹3M¾É¸h‚\FÊop‚´kW5¼6ÈHx™2oXX]×MÝF”Ûñ†²ÊÍ	5Lj¶ŒÈãßj§åƒL4ÕXfP]S*G®Ã5eo0DÒåYSc<ßÚmâ‚jÜ^i“ácº‡É=§íͲâ~€ìdÄ#?ÞŸ÷–فazÇ0ÔQ”£­ÿòðü9Bžüï©Ù°-½UØj“Áä“zB£¨TDˆ:»¬£\düY•<ZSñ|„|¿×t_Ò2]¥
-a$|?ˆ-l§~Edš”â(d1ÅĪàítwWrN5S:AàŸæ¿œ¢¢
-T{ÛšM·õ0ÝÖæ¨ÃøAyŠU›^;ÄÖO˜9¸<š‡§ª{’â¦ûqRH­²¦{À©ÅS»;®@6¶.…‰n»<8'¶]n›/°¼æ’³È,%Ãæø"8³VXnoƒçØ“×ê1öÝQ°ùà4z¾rËÓ±ä1}‰ïö×ð^÷ŸláË'ˆÀ²(àEFÇ&|~¯=?ôú'F÷†òyj.J•è6ÅT°ÄýšØµ:}-\$†“ûš)T9`Þ"lä§]aƒ+ìhk~ÓÃLÞí;1@vç%\
-í2‡9µûéýrÀj±W+k®YÒ¼Øñ›ŽOŽØ-íñqÖ†8-;UzcW˜<ÜæçÚ­vŽ£K.Ä~“Þv0w
-P·R·J¸s˜à%G¢
-V´IdÈdjx
-ŒÊç‘]E5F›-«Ò½¦±D­b Ðn¿àªÑÖ<mÏ
-¦Hw‹ýMæ
-¥‘@‘ÄP´¢©÷ÙА8FƒÖ&FP%ÂÄðѳ8¶W±%KÚ|âÇC&µ5h…íq;Gúÿ‡5¿¶
-N½¾ÊõüŽk8˜u£lŒû؍Ö&dõ1a÷Õ¹¥˜Õ°´/À;²oÔ¤ÍySÜñ™Sš?à7¹»©ãã
-tÒ“»±íÖÂxT6ø°Óu=à@¶D¯vZ²,-™’˯g[‹b`öŽa¸SAnªºå_x#eØѺ];mŽïk"
-sö™ÜPƒHÀ
-Kkd}©ÀôȶeÉ|oí³ÈN¥/]ëÈxë‰ßIÓK*oÏ<äœØ PÊÛX
-	™m‹ÁÚ(ë¶ÔÐÀi<Àc>-ÇP=¹¼ÖPúQ–,…Œüðï—®㬋r¤tÕhn¡<Rî´®†%v$ŒƒïȧÃøŸ±´‰ú|^^|zóñÓ/c56zÅáIù’»ŸÿÖD
-½äºû[ãhBH‰ÜD†‰ÐØX˜&âÀˆªqùÅC-endstream
+xœÕ\Y·Îó"?bà§Ù@Ûâ}$ðCtØ–oYëAœyWZ+–W—e[òßSE²É"»zfv%;X½œn6YçWûÅFLr#ð¿òïُG7¿ò›‹WGit#7ŸÔ«Ž^Éò‡(wonÂ*lârfsúøH–û¥ÖSØxá'ã?ýc{y|b¦„÷ÛGéÒGk¶?µÑ_Úè³6ú²þÐF§6ú}}ÝFŸ·Ñ¯Ûååøâtù¤]>=ö“ÑÌO•¹pPIµývÛFm½ƒNMN›­l¿‹Å¥‘ÅËoÛõ_êÍÿ<ýè+mG_3… äæDIjsz´ýüXOJ
+…”“.Brje'g’ÓÂc1j ‘œL°Â aµ–“€
+œà–õôÆô³+îÔÈ4-í¤µ:‹Éx|û
+˜Twg[Ú%sÕncõ…Óü+ÒLÊ)øè7§Ÿþ‰§¬ß·ýõøDMJÈ “$Xƒô+4þPø»žŒq^‚¨Jà5r{–'U0ÓÓúx›èQûùòøaóé•FM2ø2»¦Ì®lÜ>¬ûš×‹~
+ø]hºÌüFaOñV7Eà'¿R“
+2Ò×R?>6“Ñ­ðìG\žžt¤ƒd¦™xZXÂ4ò;²wF;²;$¨	“	oÏ´Ÿ´\V:\à–àÉ:_ןÑ4è8!`ÇD¬ç'] Ë…ÙÀö7Ç( Ê›	t
+UÒ0&°B¸3l¿<>q“Á²Ê<yŒf&¬Q)Û:õÑzÖŸ(A-Ú:ð'*ÄÉy»9‘EeÏš,­Ë"ƒ#R÷°ýÌ)ÐPYC“;³éèM³›l4ó®o7³øt´…£•æíæ_›Y{>ZÞbMG‹÷žµÑ‡ûìñ³öX[g£¶´Í±JÙÔªÉÝL=먂}Ϙ³c`}°! ÇQN£Ò÷<l¼¿,7XVr*ÛWdÙ[ü]y1XãP!¥ö¸MzÞV׆Û ôq–a $•áÆag´
+ܝ—v¡¿BxøtMP‘¦”ÄLµ5'½܈ŒM/>ªÖú4óCZm»kÐQ
+,Cž|oðQ¹½›WâÚÁ w¡PÙ®i»’»2²'©v~’i’À°æ‘šàü|Œ¾Ūó0¥Ÿ¼óëf&Ÿöl`wY¥,<°°%O…à’Ì”_ޝ¸Öì·½E´ö¦·ßÀQ&û¯íÀ¬=ÖöçFabÕÛÞp"Ü´žHÍO8èa*×;ºd®c@·6ëv^¦5QÛ8é*,±ŒD#›P6™Ïv¹Ì}‚ UzERuxE!=±)ä÷‹Åe©¢íqK‚^ÔoeaÔ µ„ã,Çš„²b{'w“q‘5H}`wïBîŠR¬É¶+2i’†`)Èî‡Ä¯Žƒ~˜ì#ò„(ÔZ@ŽoÖÓgš„øÔõh²­­$Jy–õ„àk´”Б²R@vYƒÞ‹yçÄõÀÀ¬6E]HFi}0…³gÂèà‹[‹jÍ+’·pžÏ(½·
+i°ÄÃ)
+–‡¶Ï	 ÏÂkBUx‰ù!€¿‰_5d‘•É%1&3Í<Oµ$„ÕvÒ1È(+®®ì»!FIv4'ÈãË#™3€ë“a54=§Ø`ñ¬ƒ*VÙ
+|HR¹|:$3ÇL³‚ —l˜å“$"¬¨ û„Wz;˜§>dKÏïÉ# Œ5`Ͻ¤¹•çÕ¯°Ós)œ¦>OÆX/ø>ûf”™ì»¤¼¤—‡(TŽ0P@Ý,Ò«IYA’ÆaFÝ#@ö–W"l¤ñ÷H”bäq€E䊜 >F-f3WYÅx—5B»Ì‡bkuTƒ5ˆvŠÆuÚÎA2ÊI%¡rD_€!²&•ú$‘%>ìÝcöÈK1ÜfrÖÈÐDê_Æ<Š*/ß‹äÒL1Ø×þà&;¢OOKµ&ÚÖ‰v,}_Éç-ÂE+…°èðÒHÝ‹>:b u6nX1$²3šÐ¬—”‡µ¾ÙuŽÐsÈP#,R%!"‰ÀI ³zðòncÊ’U|M+x9aõЭÑϝ’z™n\HXn?+êaËü~µêzÊãl´f}
+2Þ.Zû¬]>dï%9»vÞÝILçºNß«4¶Î¬±<IbMø|À¶¥š@ÒR©*b-}¼Ýú4¿ÈW°á›Ú°="ÞZ‹Ð€ñdn©Ù?—Œ“Æ€À,
+|}ݬ¹4®–6ûÐU™¯”Î*Á¾ÒÖ¢í½k<EidbO¯_9áÆþDífµ}¾f9Ù|ÿØ¸£'qŸKÍöè­\êB§Æ{ÉèB§:?jLB§KU$~§‚ÎfûÄ¢J}bżÿV}büȼ‡¦â‡Ç>«YùŽ³«^£ÂÜÖû¾ÚSvp+Ø©kINPÞz
+Ï+`ŠU¤v}-÷›B¨-—¤íòáùM–F
+¥ÉNÀêÁH_ýÐ×بÒ'Oú£ÙìÚÓ®
+Î2k
+2*¸¦½Î+i/*[©c7°É®6ª˜2éÈ“:÷¬Ò3Å´5Rå¾×½Çù~êòÂÕ.‡\åÙt¹oï]NmÒÁõú5I®ù¡06ThÐVtx'èCI&Ó‰·²h ð~Xî]öõ¥‘×[S\ØaÖÈ÷Ö³mD,ÔEï"…Š:ˆd¹Tå¥AñÖ…j9à‹‡Ta¡Ïwd-÷@»VÑ")³À©ó‰­Ô+xˆÐ–¾¸æ4^sìçYö¡ÁÚ®5ý]·+I£"ù¹k1ê@#²ÛÇVך‚BrLÅG£äd¯ŽL=¥v¹Á™µâÙ¢‰…y&¸ö¬1/Æ8/ª¯£µÍ'÷:é+
+»
+Ƭ;Âô÷ÒÂEªärg¯zÂ7צµ_€{›±"SB%3‘Ëv„r^?xQ€°3»wŸB'û_)‹†w¶/tOó›ÔI1ìé,Ç_s™C—°)c$°´*Þ‘,ñØÔ+<½n~¦ž7»sŒ‡–°xÐâäGsGd$~¬©ê›;¨¢§sâa4]’õü’èìj¸O^¦6iTÿe’”>¨‡ÿÀC1ûÐM_÷4@]Þ±ËYœïñ\éJe<uÖ.÷•ö„\÷a‰_ëj/+k_TáÒ>$zà S{„œ¡Oô%v2O×ú:fŒ<ôŸ?ƒ´GDß>ð åƒâ endobj
-39 0 obj <<
-/Type /Page
-/Contents 40 0 R
-/Resources 38 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-38 0 obj <<
-/Font << /F27 31 0 R /F8 15 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-43 0 obj <<
-/Length 2115      
-/Filter /FlateDecode
->>
+40 0 obj
+4823
+endobj
+44 0 obj
+<</Length 45 0 R/Filter /FlateDecode>>
 stream
-xÚ­XKsã6¾ëW¨æDU0ÀçlíÁöÈ'³¶cijI*ES”Ä5EjHʲ³µÿ}ûP”%Íd+{@£ÑèÇ×
-]ήU8ŒE¨`8[¥Ö""oø¡PÚ×ÃÙüg”É2«Å.ÉÛ몾(_ïÒt[gešýêúnZäYÙ¾ý6ûq¨\+©‡c)Eìû’öOža]\Üß¾¹º˜ÝÜÝþþ0ùùËd:›þ~?y¸¾{øÇä’C®£žBc_Äaè
-Ç
-äÉ0"y#9íh¬µvŠ¤¥íp%CÚsh~5R±³5«ó
-—w%ÚÕHZÞM
-4¬†ÎË+PY‘ÓŒ¥'bOLJª”Y»«ê'Ѭ¶í¼Ú•·Õ<kÐ(gîsRÈ…Qµ{ÝäiRðDµm7 U¿Zð7{IÖ›Âh.yn/W}«T£1Œª'3)ùSÏ6ý»/ª¢°·ßå%Ë?ÿ‡ìë6kàT_ùN[áHù*dbEÞq^_{Byîp¬Hôc䁷$l˜ ×è‚H€ŠÊwõq4ötä\ÌŸGZá¬têó&/—È®ÎçsZ)ySÃWÎç?©ÖVÌ¿Ù>Ž9f=¡ÜXÁ
-Ck¸4êSð0Qè;³Qæ¯q ËGZB¨i4Ê:·P°V	­@ÏUNCŠ¥U9%ÇtSŽãÜ*6EÎÎÙ8ÀÕI:g°
-º¶nÍ:‰ þ ³s<iž•ö|0Jj¸Z#ÇÒ›-Џ
-LùÀÙ(òÐh1×æ·²I@‰…Ta&=½SÉØyD)’ÌVbæg`yQÕk^HJJ-ã7oÆEìÜ`JKßY$©9¤][h:iRòì£=gžÛ6Ùb[ðþ¶3½9æÄe×Ä“4ÛºÖ‚Õ6¯eÀ¨9oh˜Óæpw½’Üò’äÅj;ê˜Ù•õ3º/5n%Ëh%­s„‡¶ªAšR†z‡ØK!‡ÂJ{¢õœU|€@üÕ•¦þ¶N(Œ*ƒ’É2ÉËŽ«ÉmƒHeñzˆMUyª‚*­–Ks«ŠÁéõ2Í
-#ej觗¡\b¹?:ggS	BšUÇ	Ð
-ŠA[W^9«Ú`f躒OÈ)<;½ú
-·ÿÄt¿3âPoylV성ÑíàÿÄ䡸Ó^	)wD€…£]NêJD]ˆ°CæhκY¬þ–À®Þ†oAy:—Tj$Ú-ox?Ç/©7¢Ü¡;F'×·1±cb=[dÔ,˜øvýâu±FÏìTErKÑ-—b®;eðwþ†k-›ÖMyѮՉRïó@œ!.ž>C#÷-ZNfÛ­à@¸öŠ%çæ¨-k4çэU«M¯rW…Óå\>6&ˆCáyá#ÔYʉBÑÜ.ÖÆ9:êÙ–KjpL5¨6˜Æ•£1©Ú¹1]2²f/½œ’¾nÖKÌú¾AìF‘:ò­‹ýbQðžz[2!u2UûiTTÐ㮪¦ýH {ä‚P¥¼È¸à=ãE×L ²”%JS/5÷-¡Y yù­…ƒªTåÈI®¦ynssºê„Ë•
-@ùKø¯ˆÛ»OäLf	+îPìkøPdì	×uõ0]¾~ùÍÎîðǁ+tùÃ\!cxÛ­ZH);.ÓÁϝÀq'qÜyyô§‹'b¨wl¨éÕÍÃÕ—›Ù‘š>ðè>ó_VÓJüžš~(dè‡jÞÝOn'ŸŽÓCKGÊ.3}É1¥á´0òôaTQH+%¹s_í;š´.^%&Ôàé,EÞ¬²¹	>þ@›Ùõ´˜÷”‰™îÉ‹ƒŽ©éZí|ÓrÔɳ¡ä»BEÞ÷#ICÈE\)ázpÅ¿ì"+qÜyÂEìW2ØŸLÿÑL?GtBðªÿ?ªh%~OE?~¢T¼ÿrùùfúé@òBᆺH'‘]‡JD‘V‡€LNúœ7纞ýÄ|×Àï˜8`±u€—þÍŸø+„`â?®J\ð“ÿ¸°ÿW‚åÍ[ã¸J5‚;N÷–#OÑ]™’¶·3ûæF‚pz)&Ë®³ƒÊãA×jáv¬-+«½D¹u8_"Ì;öÌoÿJOLvªJÁrI>ö}ç_¦6ÿq±)áQût¤oü¿.Õ Õendstream
+xœÅÙn·µÏBþÂEžtßñp']ôÁŽÄMâUA’"°%[v%Ë«d»Eÿ½çCžCGòUœ"ú\®gßæÍjÄjÄÿ¦¿/w®?t«£w;º«ïÊèxçÍŽ˜þ1N³W·öaô«0+­^í?ÛÓ|¡ÔàWntƒø˝Ÿw_®7z~tn÷qº`ôîizDЧ}KЁ º;¼ è{~C^µûÆá͵F´›.Ÿ"P
+¹{€x@À3¾)üîtý‚ÓÞ"öû/»e›pRV½à«2Ýô=
+¯¥¡Ã?÷ÿ±#ÇÁûQ¬6B®ö{„”óö*:ÛµÅûM‚Þ'è}‚~OÐ;å2»_·;Äáþl.ïjÜ%à¯4|X°µGÀ1?ýþ¨,Úo€qѯü-¸ÇÏ,ÃoÊN÷š;ÅE?t¿]ý²&èßÊ©uý¡0\¨6vµ‘bð*øD½›ké5Ži£@ÔœC6§¥‘(è‚Ú}¿£V6΄MœP 2R
+VI¤·R~ÐÚ°‰Ï×Ò&ÀÎÖbÐÞŒº,–a÷°+¸÷ÇõFÂÞ
+žø‰†7âup"¡©Ö=¡'.‡«;N¬ÎTÌÓ.ShµB„2­pÜ€w}Þª€Vñv;ø´Çê¯
+/±õ$øï*ÅAãua±‹Ùª®›H!=Œî\f”ã ª½(ìªJRêÑrÎ;AFЃŸœ¡œ¥;ŒlϚᐯe¦ÕÞí>C \HI<SúŠUÒñAæ€ "bڙ擄OäCi½+pOøRi‰tÆNo‹hËI0¼íKÜSv¥òìÊÇxÈj0l&ÛþxÈp÷|£KçÙ°ªF+Ù1´7¿Š§Ôž‹'Qí´àú¨l³…|‘2zØ•¯7=ãÌ[ ïjYôT“ç2óª+–€P#Àš¤š iè`‚”ƒÚ¼lýÉœctҝ𮕵‚—+m%bA©Õþ÷;ûýyW
+À±C/aÂèr#øSJk
+ܨáà$¸È8XëaܸÁ©ÂâE@ã
+)"Z+xÑ
+þcd£¥ËDG(ëã8ÞÊAp͈ë‡5èP㣲µÇ…Mº¿Ü·’´ý$ÇÂ(3i_ÔÁIfÄŸ’Nfê™)b2è\$è¾¾ëMaš¸v6<Z•ðE45Dv(Š¨+©¡ª=ÙIoèQg-vZáÊ$FؾZ¨ÉFa%7öô3:°í¸ÄHk„ð|ÆD·]@{&=ã€Ø7cTë®›Âx/',X@Í™–	~>lÀ“ÄʶQ:³2²(^›D¥CNˆòŽ‹]Ÿ˜9»¢’I´–7jÙÁ;6“Ø:ñòtI°ýÌ”$ßѪŠd]ÍIÌÉ8:?ÕÍ„'¶ÂH>ä²ûM÷g$yU#ŒUMGÚ”|á†5²Œoœr	ËŒ^`장aû7Í</Î0mVX+óS°¿]qFW[šºWš¶G41Îgä¢]_³ˆ…$02³)1>33[M·*{ž¸?žÔä²ÁÇP@¹ß®G³NbØ©˜$oÿç&Zˆ?“(²M™€÷ëӍIü+MÃv' ZŠÊ¸ìÆ­¯RtRO‰J½^~¹Ž+òi
+æ¬ê¥½å™×¼Ú*ãé¢k«•T$Lr&sÕŒ}QŸÝÈ;¹–ªq-§6 O¸Òi£¿éù£04ÇäSï¯7ŒêS.h\zÇÆÉ­Y².ÆY-–‚ïL¹
+
+áà™{nÑ»›Eñ®ü>Ò‘cb’`´€YÙöLãÃéòr÷Q¡Ç=œ' dS˜òÌá÷w}4%Ê>ëšhqAÜ/¹¦$`£Y2k¢ÿ„ŽB1ûÓJ‡™FòÉX:þó
+Ä‚ŸÁHÝÏIp¢¤º*~ff5N•èAcŠ†
+;סÉ͉:¶œt¨ZpûÐÅ``™3P_é¨Î"Ùíô+¢jñÀš¢x_/Šß_91ó*ðgŠß
+y†5RLÉƸ|ÐdãRù€™06|8Áº„Â)WWûNyntþdPûS	¡Õ±9WÛ)¼@]÷jíž~¿®§æ0²Õ˜ÁM™©»_$å=¥ä¾LþB#üû”ıD÷lߘ›íÛVëŽi.«ì±*àAwßþfŸh8ÌvÀe©¢l…†Ç%ÿ¾ûœ»½2àû²hé‰yÑq[Œ«¾êU>v1ð²lõšg@“¼ƒ¢'£Îî—²©s˜_Åõäx^®òSöj“w*2ͪ€oÛFèÇïz·;÷°F,r%„Y¯·<ù ŒÿN»»"ÿÍY¦™û”æ>žÖÜáþl‡Ä¶™ÿª§eúóc×…*4u¸æ_ŸaÙŒàxEç#ÿ>ΆxAAÐkS–ìçlYä«1±`À+±h)´Ò íÿ)ÜŠyÇÐTÔÀ^Â."BDØʸiôÜ&Ñg·Öà˜š4À·ÒâªÉSÀðXeTX賐H¼&¸{s@‹ò+¥ã[M©;˜Óöÿ´ö@iéÅäjOáxW±Ф‡yà&PF3TÌE¸HLÌä	¥ûyÆ$çDž¥„HÂ@`ÅÀÊfÁ²ÖXl‹ƒ/R\,º¹~Ú½çÏ!³)ŠÕ×YîTÏ£®eï¼Ìíé-0µX¢j›ôxô`-ˆ÷ñ^HãšÚ„²àóÛY®²ÉXæåK¹e­Â ‚eÎ6ñb¡„Ÿ…(M
+>çËG¾Q¡@*xÏaóÚ˜õHU!5ñ·XÍf©ü¾{}ÀÓQYiÎ(¡RRbB;VùÒJ©iÀ1æî}ÏÂ2péIGë5£ˆö8
+ÕŽ¦ªŽÓ݆†ÎnÀÞ%0Ïôm¬ÑÊð´;Z!
+ÇzÓ¦ÓYNW–Dkb}ɤ蔝¹$Â`º-%¨»ávNµxkHüù©*0%Üd?{¹Ù‘BüIǺ”‘óN=a#xxu²"eýO'ÆQ®kc»ùÚµö>!¯’9‚e›Ë´óK›¾‡	zƒ Ž c;ŒÈÏêé2§R†gÂüµÔZ Çy¬é³éå/fE³’‘GØ,†F†lØ3«Mv<ñ°{[:œ4ƒ¿,xu9çìO %`m«{7.Y_•PfP£2™“QOŸõì`®H)’ð`´wy¨ÝõmÖ/›|oÃÒ™ê.¯mçyûÛãn„vHÐo[£Íæö»Ò	W†JS\eÔsìrÎøìÆZ=ï5Ö6ç·Á{÷ü¯
+&+¬^0±¦k¢úî²áº-ÚúÌå½#SsE·”Ä,Qnéж›#fb;\7Ï&£<=.¥ÖWˆ…¨ _VfÝ´%é‚nµxÕxôŸB“èFóRõ¬2acÒ\ÕŠ•Ó £‹Noj¥0ÿ¯2š	jWå]¬Jù™„CùI9&ÒTMjc<álŽñ<:‹åFŸÍÂ¥Ï"7urLv+ÓB½ÚO¡h7ˆêËP{Kϳ/˜6#ÝYC捉2'UÜ”¡]-«±Ïû?¨õøCwnÿ›vð×íiMëñ³žB="àY²S«lVÖ—/øIêÖåí;âû:ŽU<å–¢Þ{ÒíýVůüûB¡I¹0Hs©6Û"­ó
+°äÚäuWWYâ#‚¹b½Œaa©…:}t›R Õëž«Îa·Shtu$Ü5Ÿ™Z÷œ¯ô;õV•nCYu«¥8Ä`ÇH–rjJ7MÕ	tZ‚–üx›ˆ)œaÊîyÏ«+÷г@÷¬i	êyt¶Ñ—1+õÁS¤@½¯ë4]œoŸ$ÓV
+ U+ñ,ãnö;!«Š5`ZlO6=¸[œ“»¸3²fŸ^E÷®ÿASÿwi.ûòè6
+÷*å¹·¿ó`çÍJÉAǯóà7¿O‚0¿’ÀÏø÷àåέ;;×ïü°zÿöìéÎõŸVbçú·ø¿[÷¿†?wn¯þ´³wgõ`˵°]*<ø }
+ÈìÐJù?l
+U„þØ΍Ãý2aùlòñÀØ‘^?Qå>=e¯¥`½}¡ÍSØžJNŒå¤Œ’»eÆ)/·”L“˜,suGÎL§ürž;gzåg*0÷9&9›·ãèI¯­jf0ÒÇ6ÌZ²„iÔJ01þÝ»åèç;‡­»%ôïÕuÈ“QCs™f2#·Ž_J3E¾¾H3],¸ÊÎÁUò÷\
+‡+¬a)íQÀ²Í÷ÈìcýôS¬³ƒ–P
+S7Fðf‰Yz,JB¿n> œÛOn½oéçv?C[h8í§ÇbÁ¿Zº´×áú|*wEÑŸá?ÎýŒ›÷Ã0Ý|Ï:õ ˜ÝÿLiÏ;W®ÓÜëùE‚k¥Ø{˜ÀÁþï…ì›ZDp³/¯s[Áå­Ž±RíCÝ_ ô0kýÏ÷j1T,މЍ4ëÖç\¹Ý*²Š]_¯^p¹äÈw¾c™ÊšzTMM
+ÏQf)`Îeå«ÜÒƒmhÛpÝâ7³ð˜¥Åg Ì_¬@xiŠ¥â®eüø¥4VÍ•‘,†÷,4W²‚ùF†KxäïmÑáíGRÌsX¦½¤‘ËŠ>ÛEðSsû¥Lr7&²®ÙýW©”_V2_†AÉÕ¿°(Âlò¥‹Y°ó?“7Œ;endstream
 endobj
-42 0 obj <<
-/Type /Page
-/Contents 43 0 R
-/Resources 41 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-41 0 obj <<
-/Font << /F27 31 0 R /F8 15 0 R /F26 12 0 R /F14 37 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-46 0 obj <<
-/Length 1690      
-/Filter /FlateDecode
->>
+45 0 obj
+4200
+endobj
+49 0 obj
+<</Length 50 0 R/Filter /FlateDecode>>
 stream
-xÚÅXKsÛ6¾çWhz¢:ÃøJ§‡4M¦Ó¦m¦V&‡¦X‚$Œ)R)Ëî¯ï¾@Q¶òðLêàîbßûÁ?ÌŸ<{“*¬ò$ŸÌW“8MÃ"/Õ$ÏŠ0I³t2_þ¼º6Mÿ«nôÚ¸é,K²`;Þ|Ï?é­»
-צ3|ˆ²þÅßMÿšÿ<‰&³8«,‹I²È	õrI<ol×›†™v®½¹}ʲi}—‚E>{]Ž
-Pa¥Òj2Kà–¸(é–ùÆLgišƒŠ7=¯@Èt»it|¢qï`O´EÐÙ­­µÃMô-õ^Ò‡(V@ë:äꙈ$Þèí®f)qNg*K‚÷ÓRy±ÿf–"D:Ó¨D羝#²¤n`qK¾œ
-ƲK2V7$8	¶(MO“2¸½œÎ€“D© £ëQ"Lƒqª~z÷öÞ‘¾®]w̲Ÿ"HêmÍTÖ먂
-,µ^"¥­{&Òü³ð­ˆ¤9v'ٝ†Í'T.ék—¦Ã´È¢è\>%',›ýî]ʾÛ‹dQ	ïC’瘦T
-¡ð‘“$ÁC+›“À\£—ÄÁè/>>È)’’ZtB½¾"É
-cí@i•WüÕ?èºf6M‘ªÙñ~Õ:^`n^nÜZÐ¥
-ö½ñ¦´ŸÈŸö²3γcL±Fö—˜Ó–tט±¶m8¸íŠ¼ýCìí¾ó	ç®íB¤
-DÝÂûÒîúÖq!bÉ|6/ægô2ìÐt
-ïï·ü“G§{Œú›E\"‡fIBù6R-‡‘kº
-nöB»ô%zh<³o'j(à2¸¹–éY;ggÕÊ`³ï—í¡*áa6±FÔvv¡¥ŽÛ}OñíO£i¨‰ê	Ÿmíz3òL
-)Q¾’-òjä›±ñ«¶®çXl=ëç_lÿ{m{Û¬9˜”ä¸HdÙ†ó7ÔúpÁ9<0ýqñ£ŒÈc°½‡ìíÂ0<×ANi»‘i™AÇ—;ëÚú+W½ƒ+뺞—ë{+›ƒÚvƒkyn>ò¥Ÿ³´(ªÇ¾‹´xtÿ­Y^ü¶fyù_Ýúê†ÊEÒ*,ÇŽª<‘Vš&Pd×V-7q¯ŽÐeÆUc"}ãË‹åõðϾž†yGµ•*%pÇÑbaºãùÆ.—¦!&Q•€šEX¥	ßÜ¡©qpm4
-0lšâ)ü‡i‘³÷ˆ„)æÓJ!bÂáAa<ü¿]ÝAè/%¬dœ`-gÂ?@=ЕŒ8‚ ŒiZá³W8."wZäZ@¬Ý1
-8¥ºñÁ)0µ<Ú…v£{^iw¼ä6fÁð=献‰ÁˆÐ=ê­ú\1Ïq|’GÔÀpŠ€@ÄÕS9cψ1…Ç3Â#zÁŠÂ	TŒÉp.jä
-Bç@¡…Ò3¹Žï‰²‚Ä>¸÷F€wq<˜ânΖ3Ø¡bÈýÚšQžÒMËfG“Ø8Nµ-¢¼8ñ05þÆøÖ¢cŽ=ªŠ#VÏئ£+–^8˜0-I—õÞiRØ#ìcDøiÖyý<X;­I8Ø
-ñ¢mÃvÀÉÒÛ¯GÏ¿Èu²¿ãl'p-V§°<†]"%-ĵ‚mwÔ
-['€µˆ¢XÞ¥Ë_€:¿¿üåâcôIxÆìY¡Â()ŠG°>ùšÖÇ´>þºÖ_ŒÚ¥ªÊQƒMMÕéxƒ‰¿#pñÈpU°¸ TUÇ*^£g–Ì¡Eà¨yã¶^ñÇ׺Éýùç縞?š—q˜–I,æžõ¥¾Üw…{9êþü°Ôý8jƒA+nÿ'=óïýðäîGÏáfBo1I‡OæÂSù»OhC(ʼn<và™Œ.£°*Tþ¹”&ǍýÊ‹°¬Jh¥i–e•ÑÇ?>y5ò/±Cendstream
+xœí\[o\·~
+ô/,ú´dÞ/)úЦŠÄéÅV‡¸¶ä‹ ÙR"Kµûë;ÃÃː‡gWk;i~ðñr8óqnœõ+ÎÄŠãŸô÷ÉË£/¸Õóë£H]‰Õ7åéüèÇ#‘þÁÓèÕ_ŽáéW+­^?;i¼PŠù•ãŽI ¿<úa}o³Õ,xîÜú6>º`ôúi¥¾ªÔוúm¥>Ž%ÔçÃy‚G+™Õzý²ÿ,>¦É”:›,>âdÁ3äúO›­‘’y(;Oû]ÄyÿS©—ídéñ¼Žeûx óÞ«Ô™Pé޺ϾÝ8Æ]°®½rQ
+ø‘NMÄGëòÕ£M%ÿ±<þûøë#!WÇ÷Ž?û!) ªe¦€žú¼RŸö2‹T"(‚ÓJ=­Ô]è›
+·´[߯ij²Ïë~$Ç3íÙÕ—å«7•ø¶|ô9
+g&¸Åï‹¢›	Êã58v'jðñ~{V©×ñóɦ%2î¨<Ü ^¾x LcT4óž‹ÕV
+æUð«ãS0(Ç›-gÚ£ÌúÅFÀ£áqa¥<Ó
+!
+&¥æ%"™äŠdW™rÆã&ãZY *¦µu‚~tUfš3‘j€-÷ORW—–iîÈ”gÎœÖæ|¹Å¥3™(\_Ô×ÓœAƒ“*%…O,¹5‰`r*qÚ»4Qƒ
+¡[ÿ®pL¸K,áô¸w¦“2ïSzE…CX‰L+ÎE’.E˜Nßéã‰Ô ,€æ÷ï™Bh3×~DÖ?Å¡'î6­ï`gj2:´2CôH+ä£/Qf†hy’™pVÁêÂ3á½ÈÂ8¼žŒ¸ÞVÍ v‹v—LÐA‘ãÞ¤bÖë„«Ðnáì0îm•üx”Ì.Æp"¸lgGÉì=*ÈülX‚ÍëïðIp©×ÿÜl-ÀJHµþC‚dˆÖçU´u¥Šû‹aüZXSXß”¯6Ò0ã´ º¤¨‡µak6b>‘†ˆ‚q	°R
+¤”ß×û3•§Ô oq¢¸]§Ö'sõ#rRÈûÑôuC,Ó&»ÕC+U×'unâ¨+ø‰¼¤0ºoÈh‰ÄŸ¡G‘pDVLW=}þÛ‰¸·:ýM	·²ƒmb ²Yý¶„)³-'8EÉA:d‰Äˆ'•J”Pg½êÀ‘‚5Áæo*Ϭ÷ó¸åÃøˆqÈ*•ä)ÃHÉ€8†Öš7¹PLÂÖŸÕ2€Úíûi€Ótì!N€¤¡O
+ƒ1üŽ#'ُ[4ü1j—bwÀ	ï;8W_Dk&¨±&Óâ–¢0†Ú2yyLí¸ôÜ-¥<‘ÍYôÃeŽ¯IfóvãÁ†JîwoÛ&ëÔ\fÛø³që7}äÖœDndáW%Bi‚¼‹œRÐÊó+q¿–5ÅèSý>£JÇÂ[z«¿>%HW*OX>ÇuàüB<Ó{¶8ýyã ÓIÜ}lFÄÅ š§ÔžΪµjž—i¾Üië›ó5Y}Ì÷æ¤x6Ì`•íX7ô2r*ÎÚ²ëd-ê+>ZZ>£©Øã›þ´÷u.<@©4</.§r¤œyÕpó¤·}1Ž˜ŽÛ“8v°wHTêÃúø×Ê)ÞÌØÁy/†"9é}n;Δ.‡’$–†íxô*RÄU§£}ê¼gûŠÔÙ¾úø€d‹D§Y¶z­*ÕÏÂÜ"ñî:Á&cìbŸÄ¯ÓÞd¬g3<p“~6œ÷§¡J^§Õ¦+›x÷AÐ÷§Ó
+³4ô}¬by§¬¡…§iM'´¹Ûò+B«ü¬o_Ç]8ñèFðþ\Š
+|èX¬ªŒRWuÖš?Qç«¢c4œ"ĺqÇ@­Y»Ÿúf3\2ßÃ:Ý]$ppxÂÕKŽz'†ík6lï~CuÖ\z3ËÁöˆ1¤+Nñ8ñÀv´(NWçû¤òj‚±S*l†1aèd¤ÒpZqÒtD­Hª¿VûÒ2ø¤¿ÇAä÷ûˆv"¬jœ&d'η%¾ž5Øo½GBjšÞØÄOjµ\f½Êîë|Ñ}^•ø9Î)™žÎ^¾Ú{^\q÷~bÏÜAó±×±ëËÉMsû5>èØ¥f|ŸéšZpQ®‡†º^ú›^åËåw—9ßx¦…ÞÙ	âØ5£	ÄÓåXï¸bG(µ©‰VÒ;Š·Ïè½@ÀIRãÜwŒ+6S†H]S8v€œ––pCz©É'½U5Bi;“7ÃpÔÅ·Å)ƒ|$w ¼ã½éDŒ¾P›Vûm«WkƒO
+ÓŠ†:Ò…–¬Îå¶M×Ã6ÿ¤A/_¥8­Ý}ÿ“šÝµÐ“1؝–1| ÷˜`
+rÔ:
+ñýŽf9Äúø¬ô-l0r´¶;Øj—ßíg)‡D
+íÕ¼yõ^$¡¸é­NJò69ô·8¦F,ÑÅÔ’G.ÄÔ) :ÀªN‚ÓbÝ´'c—Ë͐ý¯}ªë(¿è$Í};ÑýO6Y£4
+L¿©‡ ÌÂY|:§»S3ÆÌõ“I¼ªôÞ$~ñ@u%ŒÄÓ"ñ B˜Xû}ܨ˹¼ô3Š¢Ô¿Ç{±§rŰლP;)lÏ~ÏÖ7ÉïÙD_šlWbÓ òÃö%êúËO–^û¶òGC“NZÖHÜ4ô$nwå=¯kòB9}
+û ù°àã8Phüªnþ›J}˜=ì]øLj;øŒ•	Y©l'Š€Ø	‹XWû¸±(ëX	ÅûbñÝìâÑw_ú
+y¯½Ã›‰ÉXrÏ[Ã%(RÎR½EÛ$ÖÄ=ë€9²nÝ»’ª»H_q³Ùg±ð¢«‘‹ ‰+ʶ`a g
+|)7¬-¦m•caãr1tÅÕ-†®-]DÉh9ó±QÄû£O @krR恟ú{Ô¥@´«c¤÷QtÜÍ#4†]µyµnÇ"uOhÇ
+è»FúîTiLH‚ŸSõ	ªïTâû~ßÐ8òÈy£Ï!ŽÜIûÓ&,?[wP#æÊà$~.3|7wA¬p®R·WD
+VùEyÈA½pXrÕÎÌ
+Óí¹È_Œ¨E’Ùÿ¡ïÜÉýü›J½»Ÿœ2
+49xD•%ÿÍ‚Â1÷ŽþþæS²!endstream
 endobj
-45 0 obj <<
-/Type /Page
-/Contents 46 0 R
-/Resources 44 0 R
-/MediaBox [0 0 612 792]
-/Parent 25 0 R
->> endobj
-44 0 obj <<
-/Font << /F27 31 0 R /F8 15 0 R /F26 12 0 R /F14 37 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-49 0 obj <<
-/Length 2362      
-/Filter /FlateDecode
->>
+50 0 obj
+3580
+endobj
+54 0 obj
+<</Length 55 0 R/Filter /FlateDecode>>
 stream
-xÚ­YÝsã¶×_¡¹—ÒG‚ßíôÁw–c§®íĺf:I&C‹Å‰DêHêd_&ÿ{÷ )‘²Ý¹¾ˆÀb±X,v»€>ÌFï/¢q,â@ãÙbìx‘éŽ?ÒõÝñ,ýÙš-ÕÉ:|ëéı’5¶6ÐZѐgUuRÖ³U
-g8œ”L«ý]UÏÁù¥ú’[hTLSO‡²]kg¤Ád"ÌK•ÔYþȽ$‡¡Tùää×Ù÷ã‰ã‰Øsch8"ö}‡vò‹íx¸Z™á$àÒªOd‹ÀOÁR¬@ÂÓ3R+‡覬<h+N&‘Œ­3^f8’ªœ»²¨òê<§6ËÍxŸØ$rJ°N¥‘œ²ˆ¤æo½Ôs‘
-Õªê#Ï´mÛìWš“ËÑ01FKàµÀ~E^ñXR*nìJ²rMŠÐĬ›ruÕVP81°ùÐ;Š#Û6Gš­´øÕŠ‡ŠaOk€Î ÿüQL|-Ú	šhÕž]&á5"´yNØ@¶7M<ÛŠéG‡- ôjrõÈŽ‘gÅ<`Ê>b"…¹ð§£®4IçÀ&ÿ©…¯ZåäVÒÃXå£^A)úIGcŸV4÷hé¿àòÇÁí
-äH?l‹줔Ãñ²N7´jÙáé«!éÂÉj Û!^"­W	TLЃm@•L³si4Èuâ¦8¡åt!‡íŒõàEUU›{-ÊɨÈ6Ò!°¯X?F%4£0†¹M	 Îî>žÍ®nopÆh:9À`±ô]!ã8„†-B?Æóõèóèç_íq:²ÇߏláÆ‘?ÞAÇNËñzä
-Ǎ¤é¯F÷£“Fâ¤+ò¾í+êÂsAÓ†¢|zs~uó]OÍØAØeþf5Ä×ÔŒ9³¯æÓ>Mïgý@uc(fÌ¿[B€“B†,Nµ&|MÁØ<k@±àrF›,Çé¤l{h“¦~†’¶¡û®²(Œ×¹&ÖÈëÉÉ‘ìѽ	>¥ú¼mªÊútÀ¥âP±í½Õ¥\À(Û–r,ÝHD¶çóY5']‘ý³HŽš6lgµ§fà7ê2³šFâkjžð(<TóãôêßÓó¾Oy°«Pz}ŸÂãCŸÂ¯)ÎHD®‹ý$H• Ç¤6×Yßï•Ò÷`1•s+áz‹2µ1h}à»fÆóÓSôTÛ€mß©œ02-þÃÎ(nëohSú­êr;¯™Ð<n¹ñÀÕ.6¯²Ø\‘"Ünߍ´ÌyÑü#FÿZ½}?ì¤÷ŠÇ´Em­Ä#KlÅeùàEž¼³}Ô†¥‰²}LÍï±€ÌÂ]WD¡ŒIxh@ö¿!}ãendstream
+xœí\mU·îçU~Ä_zo•=¿û´êBHBK	›VU[U»Ø%Àò’ªÿ½3ö±=¶çÜ»»ì¦­T!ñõëxf<óÌøü´±ñÏüïã{7¿s«'¯÷BíJ¬þ˜K?îý´'æÿŒsëÕgÐA˜Õ4LVZ½:øaOÌí…öƒõ+7ºAÂ/öþº>Ø쏃öÂ(³~ºP4£^oö••ƒ‹bRvý~³/9
+¯Ö‡›}3x?Mjýb•Ò*½~™û?ߌƒÓÒ„îJùA+·~
+ÅaÔÊ®ßlÔ µ›tÇ»õ«P’Ò(ò3v10¼ó¤÷³0¸žœ˜çv&UâŒÏËÏqôIƒÃ+LdøSÞBÑ9#¤™ôD·FÖ9“F=ÞFҨѐ•œæ͝åî¸
+=ù=íþ¾t'k»Sã(æéqMdw¸<‡çôú]<ÅQ	2=Ý´œ/üúq™´ßɨ<Ìÿ÷ƒ?ìI‡àšƒ#à’8ÔóâŸäM=‰ÄBÑå—ߏðw78£Óü8Ó)×tyR£ÃUìKo8¡Õ¾q!ŸÐ9žµ‡#*:TëÔF+=‰’è&“H‰µ§…——I¹Ìê”hH)ë«…N*-$‘_4pR-^RÕB5PN§(ÂzóŽ}5ÕIÖgG‰ úb·‚/u§ÔŒô¬½öd#Í`œ¤½]àN£é<ϹŸO#‡Z_dý—âeÍWgíø"f4‚ü~ˆ
+Rî@Œ¥&<•tÃj¹~”ÆíLyéÀ¶ó*±”§Ž¬</1+ÙCQ£S”I
+ˆ“ßϵ%@D	‡Ôç¼ùôÔ@Á½˜É¯îíüæ¯ëû ¨ÃäqŸÇ¡ò¢ƒøεïJíi©}Uj„¢·°­¨?~°ÉÊõïaëR8÷~iЍ먭nÜPlƝÛ~QjKñ1;.?؇Rº°Û«ƒ#lE†C¬ô¨ß°Û¹:é–v©ÓÒS§KåßÖ¹×
+:Uª|ÏRàEêe©|%˃ä;—$‹¬OÅSÔ „7B	×ûß6¥ÁïrƒÙʈ#ÕºüË„C޷ĵ÷Ù¶G5u‘5ƒÁ|Ñ)BQÌüè
+åÇ“«äÇž…š¶Ç¥ía7[³†
+køI;º„÷™	È&_rùǯr¯j(B°ÔI4#…NŸ¢1+Í„pz‰oËöXù!'K\•êVNýf(·WqÙz
+¿FdÃZpP°cŽ+„_y7òåBQ;Ã+ÒÚ†³âj³’/»ý¹°Ñ÷»ð|  ?
+Ґôþ5¡ŸŒo¯+x±d.Ìú'¬rÛ’$`C åéîRæxⶳæJGÒ³WÄosï¥Àˆ3Ôp§x`o[‡÷ËBí׬Ç{ÂÖ>aÇ}5{f!y8)ž©íË0rO¹.üš_÷Å–xlŒëöuŽ§TdH¾ì’»OÖMpÑ- @f‚åXºhkŸ°XÁ:x¼‰ŒÀãM_ì:‹[Ùÿ'Ôû÷ùM©|œ+	ˆxFeBP'\§ã–¤ç0ør
+hlåä	!4¾_Ú|^ŠdŠ”¶ß•Ú‡l·”âƒ9q”ì-æ³@Ôz÷JåÝx´ x˜Cf_Ñe¥NŸ×”¡a4p圙ív7¹8³*Lsovë׿Iŵ-¿çÞÌÂ…‡M•†+Í^"›;?(´o#T.®þ(o)FY++6è/Ô’uw’lÓ:¡A'{y9TÁ‚2S«`}aC¢²SŠ!¸AŽm JmŸ]ªkõ¾³šÌ®
+ŸäÈÎ\¦êeIqé{÷†ý¹‰ÈŒ`½y× 1¦+(†Ïù Þ@õ|G	=(~Wb
+ž>û:´Šî׸L~@‰CÕAÆhEã}×¹Õ)ŒˆÁ å:W\×Y%ì“£“Ö¤–3ãU7Ñ+³•ßy¬–‰C¡„±C?Uå<ÕÅí$Ë~y7>¼¡ÂÃe<¡.øÞ¸'ÍïÍ;§'ÈÓO
+½Á”“	_¨Rv®+†²æ’hMÞÑÂ3¹°ŸËCRÛ`@]„ÓÉ3lÌðÁWkòŠ?ÄL*±ò&CV/ǐ)ïo?t™-f¬’“ƒJ‘ú≧Ey\·ô”1¤iYš«1k;åz¢aJRÛòLƒ]äd6UM¹Âìzï7GPâ~ê
+ѳó‰M¾V¾áÄ$åå¼VÖ™0!§4^2¨<´wm¨%CH±‹4ƒå6{[жÉ`!Á²ûÕmxç`ïÛ½ŸVJ:|ä+Äà¾Ó­7ýyGŠzSë/sÛåýMjF¿þýMäÎÑý}ÇîïÛ²¿ïÙ»ó]ˆÀÁÆœ˜ƒWsëãMHð>@J 5Ö5ÚyÔƒ°–Gõ«øQì÷î–¬š9?O‚Ñ_Ä­“è`S”¤qTºmG Á(r)›„2°¯,õÁv%A¢6ÄßðÀe›f‹xû½(Áß±Á(ˆ%ßÌó1Ù’ŸnÃâ&‡é“¢V_3ªÃùE;ƒò·JÛ+V_=Hnç9Ô—Â#AÌýt­â¢n…™_×$Þüþ¬°¸¯kߟÕ`MØÝû»]öw‡=¾?uÝjUÎi2^ d¼[“Íq¢Ê$‚Ú’Z,h‚)¸ûã¿rÑ"Ø_LÉZ›d2³F›ãn“ QŽb9Tª.ÒAHÆè<g#h†1Ƕ~#ÚIQ¡h|Í刣¸ˆBÉFuu+cvZ¿vaUÉQ±vs	—}Š{ÑX½`Ê“hǺ˜x^À‘ÿfÝv9ÓLJÝæܵʾMp¥³‹² Ž¡ö/çØ	Fž~‰(tUα“Ûlí6-l×b`Ž`¬Ü4X/ÐÄÁ®Õ™ƒ-ˆ©Bë‡QT9ÀÄÛær°³’ç±ç⤲ñXñ‡¶K«œ0ú+/íÁ;5 9Èêú:ò«Ã¼©*Ã<ô—z1Ù*l\z"uY½5ã<—NÍ/iFîµWü@’‘ìôÁâ“—°lH—ìæ
+
+,ðÍâG<iUQwǧM`.õ¸Úœd•Š•ÖÝO‹dî¿Óùã7Æ-س„I; ¨Â“ê«0†Æ{ÓÖã„ÏÃU+Î2ŒK>«ò¿,ÇdaÌÛˆN¤ñ™C%ÒDŠÒÛˆN¤±S—b•ÛR(æ…üŸ}yö½PÂóÕšÿ³ïu²oç*Jãâ ´GTú¤ÊýְềJ!Œ›¿Re´ˆ³ò¼…Môò…bÛ¡¡¦!K_H­½|P5å»ÖŠÑnžúWç³Åç$ØE«;å,&Ï¿ (o–>{€ïYÇ¥ŒË ÷Ý×e甁èZú`ÿ(y|C:¡òáêGS‚¡Nc5…6ùM¾wļ‚MÀöeø|-ÿ‘³æǧëW:)uÕW…%W@"š.qV¹¾Ýû75ßendstream
 endobj
-48 0 obj <<
-/Type /Page
-/Contents 49 0 R
-/Resources 47 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-47 0 obj <<
-/Font << /F8 15 0 R /F27 31 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-53 0 obj <<
-/Length 1734      
-/Filter /FlateDecode
->>
+55 0 obj
+4873
+endobj
+59 0 obj
+<</Length 60 0 R/Filter /FlateDecode>>
 stream
-xÚÅXKsÛ6¾çW(7jÆdˆ_éÉIä™4mœÚêôÐt2I[S¤
-‚Rüﻋõ2íØãdz°¸‹ÝoŸô›ù‹Wg<™dAóx2¿š0!‚$Nå$Ž’€‹HLæÅß^Wêu©ƒºêLÙ|£þØ/Óæ¿N‰ÏXE³œy]•	V¥¾jõò¢ü·/;ƒ'¢“©ñÈ“Q†Ž6º/·’^¥ûzÈ “"›ø<d’H+ü¯i*½rê!½Í”'žª¦Ì3´pd«‘žY”DäSŸy5r•H5Sž?ð´{,írULƝUuM„¶VØ­. U0óG•]ªF]hU™³VŸ6·çyÞë²ÉÑ搀:±±Œ31 Éíùف<ýôé·÷oOçïÏ?~¹˜ýñçìr~ùåÓìâìüâ÷Ù»{Àó£ C5ô9«°ŒºEOÈ4‹¢³×Z¸@„úUá-.lš#H-”Ugn‹q¨¨6á…:¾bÔŽ	ë_GäW›1Äz¥4Û؆e»/-o„è@àT0çý$ÏÀfÌ zíÒÆ]ê*Ki¥
-݃5fEÛŠVð]­§Qlq‰éù¸mç1Ö[š0	¡žÐ¢½Š>^P åÖÅÈ´­dÀXTz¨]¹iõ­“y·¬ù‚…àdììÓ
-ñ¯iϨÎ(sç6†ÓZZ*E—äB…ÊeX’ #g–*åºj{çDXÛzbßÕýQ‚(¢Ð~m;\ÒEr±‘mM3î®–žŠ81 v
-Vç@½®tr
-á.H at Wn7Ð+¶—€†fÌ‘µ"÷S÷Á{]‚€ƒþïÝå<	
-¬3<M¼œ‚½¤­#cU“—ÄV#Kw
-Å·†èe©Á®ä»uÛùrü]@wäYÉb…X‹U?¨è® 'i÷Víß4fòa¸ÆJ”z5Äz“cüE™×"ÞÑ1°@mµ %j:„Ⱥ<Ådd™÷ƶ<ز1ϼ¥aG«ÎíXOGä鈫ÿŠ¡SåþàW•HÑÔåœ9Êà‘Øm[†#7O!ZuA+äçì´UÊvÏ[Úl¿Ràè!«pq³P†¨]¤ÀfÓ¹3
-=iñ„Ö_jËïâö0–+MN4ywóds[ÑÛª4®Ýl)½mÙO*ÛÅhf‘GÅÏIh
-÷á-½ö9doëµ2˜oh,n5T¿Hðu0Œwô†c²Ø:®Kw¶N0¥ë:VÆ6œ
-h!Ð%”òÍ‚2Ü´ N¥©û‡¦¯û®DpY¼ºYtœŒÔZz«²c[?mád{®zYu=ECAü˜ì¸a‹ µÿ[µU\@ØïAHœãÞ†=Ó·Þ:ó¸zèˁ.r§¶É¡HÚ8Ön dòx”E,Ó I8urpwr·ë;*¤QΆöÈ€	£Q‰Ä±iËÆî
-Y ËÛ¦‚0„]¦º2ðÔ¸>Ôåg'|MBΰ Bï½<¶·xì—÷±sÇ~~q‡ èý„aÅG°3Œpؤ-´{ðÈ`_ß‘>‹eÆ~
-Àü'- â8&vÄÃרÜÛkh%x[—€ùí‡K$ù8w|ˆï˜0‰LÄqÈ(Lžqô+xœí\ÝsU·÷t¦ÿÂÍÛ½®¢ïô‰$d¦MZp§i'¶Ø&þﻫs¤]éèÚæ#„08ì9Ò®VûñÛ•./VR¨•Ä?óß'{_Þ«Çç{™ºR«ïëÓÓ½{jþ‡œ¿^}½t\%‘¼övµÿhOÍß+cD\„úÉÞÏëóÍÖŠeë£ü’³ë—D½ êQ_UõQ‰zNÔW=·üxJügÍž7ôü×é1Èôßý¿ï)½Úÿaoÿ/?¯®cÎuJÔWCñŸ_·ÔGD=~pB÷ødAȘlX¿ âëLÔJsÏ+ñÕX'?¸Þ¢“Â¥°¶ü}}”Ueå‘QñgHQ„è8·—\Ä:Ãѕۏ¸-_ÞS®±:+b”jµÕR+íÈÀì€!v*
+QÚð5€ojX>¬ð°MgÑ0p¾K b!çhhäoú(ѧí§C‡`ÐèIú@t8DŒñéÈôϪm±ñpêpQ1¹›ç_¹aR×mÜjùä×A8È«—”<(_‘1Î9ÎJßZã´Ó*òlÌM
+󌳉͹48WsyÄüD-BR<uýJÒ=èR¬‘°Œç5×·)vʦçT /òò1}ø˜¦œ#zžõÉ´g+Ö&2‘Ÿ"Ÿ LrL‘§ºì’ÈÎ|qNA<¤'”c¤×ŒÍÈõ'÷Ô6r÷…Çuš¯ª`×úלî
+ëQ_sËÝ…ù£AEî0gCŸm:©
+ÜDцãÔÆyX6‹2Ì·[”	Õ×g,üh$Îh†ò`Á‚ÍÛáæ./‘7î¶Ö"úF}¼”ç]äø^Þ/¸€¥Ò§°“¬Ra;ÉŠõíd‹3Ó”OšÅç}#èê"¶©,„o¿}9”‹Î`…÷v	£Ë¼E^¦I¹P*²0Eëi©¾hmc¥ÏˆÚ¨íÅ@dIίä.‘G1œß…éæoÙÚ/ˆz´Üm{—Èk·KWë%gÜÆú‹ú.q[Ö¸U
+ö:…Žþu¡Á®uÀ¨Œ#«u˜#ꜴÍ
+/ @AóŸ—µÁá!*4 èDœ(CBÉ$€>\êH%
+¤°¬W‚6…Ÿ*ºÂÒX«©¾t^8H„f+³B!®Úª0%ÎlBL„^kñ÷íÞÄWéÔ.kk¢>*°ˆD+5o„Œ±™ÓD'+¯Uà\.Íå¿4}ù	Ó‡á<LHf[ý–¢ϸ7”†æå¼2¨iÞ­{°µ?A%j ÈmÐÀ˶¸¡i2™vt946²£fFÊ…Éôt2XÂT at 5êÆ>@‰à‚RŽKŸ¿S¨Ši®]Oîm³	‡%r©=•HiüdóˆÕdÆm\½-BûÐëp··~áZZµÊ½ XsÌ«ëe¡W>DC X€çÑÊ&¤Y0ª´c÷GÅ8{}2)EË)¶`èIñ´èa*X)µ‡VЊ³z2ðÂÁ¯³å#V•Ü¢‡]&ýEµDÞ
+š"0ö j.)«5°S&Èl<žÒÄ:¾‰5´¶Qžï$F
+¼ý˜lPÏy*ÀývÊðÈ{Ú\9ÙZ
+k‘xD+,vTÇÕm]Ù)–°JRD¡ËT]ôÖ~9ÖDw³òBrd]A²ã…ÞaçÑX€±}¿ªÄªÅÃHϱ,§Ð7ÞåªGs®Zy¨ZÝÑb±AB˜±ïŸ‘@
+¬vÆÜ2ýŸ…­’Mº€„­77fŽE¡Rí‰4;Ú¶
+¯¶N
+GŠeF¹ãb…tæ=o†`ªÀÃÄ9.&éZŒ÷6>h1hÙð6ö>å›(¤©Ž™¯Ša»o>gú˜0öÈðHÅañªùf
+xò-€ËI¹.i¼îÕêâk<œ^ï¾&}>U[bk4c¦ø]”÷ÃdŠ²èØ*aǵ1¿òšiÌžÀÞ"Ì.¸—°‚ܵZ@ä^ôdÝxdǍ·å!Sx†¤2-‹ÿi9¹·Ñ”îÇÃÚœeR¼Ð"%$-K7ÞÌiÃeK‘Wà'ÿ¦
+¨¼Ô¼CÚ€eð3÷m‘½ßÔqc+Þ+`ª×¡¾—ÄSW¢""ÞÞ¢€ëûu;îâ{¨t Q|Cýž¨÷qÈ>¤Tº•
+WC‘Å«ˆwP«Þ¤Â6n‡·W¶vf›?XðͽÃÏUQöò€€#ÆÆËÇ9—1}äR:e©²›J³£Ìa¹‰¡×hËQt÷ZïÝâ³TØNxü™º¯þÜÝ×|’îKR}\÷5H÷%mýß}[÷5Ÿ»ûÚOÒ}Iªë¾ö龤­ê¾ßnœ/¹,Îè»3ÙÞ×)N=^ëe½:3òok…Iɳ–ÞàÒ#»ÉJwGëÁ+AŠ„×»ï|9áý½·”ž7ñ“„×f¼ón‡÷æùãÛ:/v
+¢¿‰PF&®©sÝüÛ¼Ô¹.j4ÜÌs3O©wx®»çz<Š¡ëýîîK{7÷µVêÏÓ}õgî¾þÓs_飺¯[÷­wªw÷%}T÷½ß7»vss(ÈÞ[¼`bǧCíñ “Z€ºÆ?=L4×€X›¾ˆÞ2sÄc“¤…©a­67 endobj
-52 0 obj <<
-/Type /Page
-/Contents 53 0 R
-/Resources 51 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-51 0 obj <<
-/Font << /F27 31 0 R /F8 15 0 R /F26 12 0 R /F14 37 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-56 0 obj <<
-/Length 2235      
-/Filter /FlateDecode
->>
+60 0 obj
+3536
+endobj
+64 0 obj
+<</Length 65 0 R/Filter /FlateDecode>>
 stream
-xÚ•Y[sÛ¸~ϯðä‰ê˜\’-Vƒ	øzY.„ÌÓ J!˜ã³Â¥!˜9J…-X	Ü ë†9Î`SéHî%°ÒíÑw­”s¡æ/{8ð`†ŠŠÀÒ
-ñ²òno‡+PDašÍCy	ùñ8® z.«àá
-4¨å5k>FB$…
-çÕ9‚¢Ée# ÒìäDB*/xwî„x(%Q¾XJ@ƒO-JuÒß!®Î/ˆ…»†N– IÉ“ð{ÏqÁ°Ž0°çåF$ç~ˆÅ"G‚ýþNËåãÌ8kufÊüµtI(@æŠ4÷â°NÕ~/¢W¤t+xœí\I·¾Aò>½gh:͝tƒ¬ØpbEv¤ñÉŒ±4Z ÑHžÑê_Ÿ*v“,’Õo=Ù`è >®Å¯v’?ƒ8ñßüÿƒç7þzÏ=¾ºKÄÑ×ùëٍŸoˆùq®}ôù	4Pæ(ÁJ«NÝs}¡ý`ý‘Ý á‡ç7¾_ýe}lïCPÿ=ù4UCø4Á9h|ò*ß^ƒöÂ(³:_ƒÓÒÈÕÓüu¶>ƒ”z´«‹µ4ƒ	«Wëc%Åà”ƒO5hmX=YèÆŒzuš‡5Ç0¸ÕËõ±”ƒñ"¤¥W«ËXSJ£VÖzÐj´rõbjîýùùZBgìê
+ºv>ÐßI§?ÃPƒÕhV¯óœÈïØÁ0jeçÉ» cÙ¨‡1&¥ÞD`•ñg	DxŒóÃ(äê~nó
+ÎvĪD×Q‰Õ×¥ô>L. „¥$a—œiçò¯cü
+B˜•Î…²ÞÄ&ã <Ù¿¡L~&‚‘Jµ’ƒô~Á…Õ›5âEZ?ŒÎ&|̍Fè´Ln•ô Å B©TÖôj4.>½ÖÈ›K_•Ò³RJš©\ƒ±²ˆcŸ†›–9Žë<-LÆÃBõy-ãè)Â+è&dZ^䍆ݗÚvŸ´)¿?„ß
+ü!W
+ò^”*5ÿDûL?’ynš‡tÍO2HYØŸáÜô ¤ ½@`A˜zÃ4ˆ—+lc†P‘ƒ>¤õ‹LCųUaïÒûyùù´ôy‰=ùÁ²ÞsYÈlqN:‚Ÿå P
+²F¨›€­¨ãzßLBdL`Ñ•URBj5À€„QÞM­©¦	ü)È<Îsï¤y&QIJtz°ÀÇBNÓ\œ’
+4^€6+µùFIØ_CEÁ’ÅH¥v‡ØI„Րl@5•ÃS"@}W&ÚÒ	'Zv¸ÈâRVF,K{Ñ´Àþ>K¿r’t›×#Pû΍“O¿_ݝäÐèT¯JéÛNÔa)‘dÏàÓ£´@2¢³€h—«¿ÃÊ@‡x ÁÝR¡ë×9Pl]¿­¸}Vê~YJOËç¶_¾³÷åsèzÀf—kZ&ØŠ§Xè%ÕWìrîÆFº¥]j´´ÄÔèY)üa•[}B‡J…ïX
+<Ï]½,…ç“(ñÀ²Åª"óÓEÏ}ÛK%W?¬K…¿Uzî8õ”ùý^YÖëRÚ«…Ì]¶‡‡5QÌX37ãG£{ßl
+M°+KaÑáƐ“ª’oÖ2QU‰D—`¢0Î ÇÀ&0Rhí Œ¯Ã‡)fô.æ+Ô^T’V¸j ³;f‚f>ÑÌ¡q	©y¿pñÓèFWi(B]„[00’!ÒçÊ3ŒŒ\œZ&h~ÉÉR2Ò1Î$Hh¶7Hq"¬¨n˜ÅÃ+Xà©(̵%KºàÇÝ`±Røxld{à‚²þjð¾À «dç’d-ˆžto™/e–	÷É+í‚Ü.n…}Ö¶\ŽŒÿeÁŠ‹æ‘lÌÇþÔÞ죆Šƒ‰,(³S¢}ÈLÑ(FK·2:뙪Ð-¾Htp¥iL/(’¢Ñ\h.{}X%¥Ð]¬æYƒi\‰ÞÃq2ûqÐ,”À(±‹þ£&ØLä¨ë&)©‰Œ&ül
+¬{›^P¼ÿ3¡J%­æ<4k£¡cG“ŸÝÄŽ
+™xÀO™ÁA± ï¢+øs·çØé>~2Ú†£²l¨s0£Ñlf€ui0‰²§yI•jÐéZº½î
+h‹©
+»¥wþ4*lu9×u\R:äó¼$wH.ëªÍÓfX÷›#)´Ç¥îYI$’Ü9yY*TafÌIz€„½–.ÙŸ—I¤ÇËF`!ß°§²iæ¢rÁÁsˆÉŠ,·K2‹€¿4'ˆÎJg1]•j¢ÈÀ#ÿ`×½å/$W®Ï¬Ô2,9xL‰¹|Ûaã¾áf=fÓðý¾MGq·€ Òä6”N0!D…Û‹ÊI‹4“ÇÈÇ`wpò•
+ ùÄFbu<HøðÉtWIÈÆeTjpÖVy at b5•h<Ô4!2£b <Ï)ªÎ	Yb!8;6šÊi)AÓ÷k/
+ ú½híš&ëÆúú¢€+)<ú‹Ñ@	à‡œùbCý/¬JBKó<j»¤[ìñ¢S‰—G+—k9¢Gp·ÃðÃ~Áí^.é|†[@å@Ù™z—Œ5§ª@G¼ØdõŽ~†¡{Äò÷.n€z«ÐUh$b[â‰PozÓ&™ã-6ÂÀ¯3sç#ø`Tæ—Â~›Ë•=ñhý¡&aIÚàÜÁÁô‹jÉÌî½<’È’Ú£-›Xr»o2ÑõzɉéLPƒÕ.¤Ïïs.ZIJ*!ø8z<ü*KµZÃc$¹ºXÙîQÍìüH­µU›þ­)q>]š<,íÀ®Q-E Fövq¨½œSìÇ82ØP$ÝÙ…„F~Š„5‹JÈŽÖË!s€“Cl¡ßlØ·‰”Öf
+el4r0”0TÀpìºI.4òúöGh›g¼hÛvB‚0ØH(,·æûÞÏF®ÔË9–hDkÃzµ,Кó
+hÒÊæ|“Šw`ƒ,S¡ô Ë9ÒÓιXö3ÈARr
+ò¬Ô%§(‰—Û÷àâ•}ÎËåÝž«®ŒGº@uÉ•Á°”´
+gd)Ve`÷Û#4¼”-‰6OŸý(šÄ+ýD¸A‹1y´ª
+/’³[ÛÏôpG—PÛz»»U¿ÌÝ)/ƒçÆY	"÷©‚L¿ªÜãVT\hhðñ^¶¥½[¤sZP.¼Ì?“îÛƒ•õéQÖ"š¯š»†âíóå
+¾ÈÀä[5Tb}¨¹À0ê#¨½0GýË6t$ï´âÄ—Å¢ÖÕÔ&ÅåÐ"Z(ác~–œ¬œ»rð¶N¦¤š
+4—þ/rø€?jX?p!½Ä;
+\D냏gÏYw¢…zgº:±5¿dbí‚q°ÅêbýcÔŸK§÷8à>L!‡À9U^$ú̺=ÕªA§Å³…‡z®¦æ›´þ@£’¤²RÞÑdÏœ©Œ&¦®½Šî˜9®ØUÎâξbE½œ!F«
+Sš†3DbždòµÞ© §F’ŽáL|ÎáW¸%EÌ2Ú£òIâ¬$Rûšš,é>™ã­|u„ö¿Í…|÷M¾™R]„gn¦TOH¤FÄ¢zËßÇJ…õë
+ôÞIêkk'ø²Ï-Ir­x–ÝÁ!ÂœŒIîIµdIWNUŠ1á©8ºŠäpÉgÖÕ!…plQL*7)oë˜0=K±dÒGÃA˜ú÷¤›X»£ð,~IÐê/ñDcT,õ¯AÅêèKˆšŒ‚tBÔ–hI1DºJï~àc<ŸQ½ÛÊ“x“Å`ü£º+õ±DÌ[¶îÓRúŠø6ëx]dSe“;Wr‰1­4‰þ”Ž”‘LÒU%#òõÍÅ÷²~磊‚íÅK¶Â]–®9Ñ}Å^¾7¹”\Ô«>w ‘üØÔyRJ‰†zYJ¿+Ÿ}Ö°QGç™:ßѾ8êøêR.8ÝViz綧FxJ2ô›c+cé¿YØ\°¥]n6o®1ú1—‘ì.)]NôþzOððs ý~AÍ®.›l¢¦7¢*2$T,Qaó=»pÒó²-Ý´¥Y®#ƒ—ߤ^~¹m/nqWžßçu~S
+p·ë[c³½ò|Á5:kIÚºHýíÏ‘äO‘{"·ï7bÑÁ‹Bí»¥.!yŠ€ñc©{¯”Þg›ý8{W(ò‰ŒoËïßå/Ÿ—Â;ÓÎâá˜æWÀHÿ_åF_ÐASáÍ
+©ñmIg|ñšTΝ™á­_}š>çâïc5©øü+ïUÓ)Ðoƒ€`!¨éG<$4-+Ѓ±_œÜøüû¸‚Ùendstream
 endobj
-55 0 obj <<
-/Type /Page
-/Contents 56 0 R
-/Resources 54 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-54 0 obj <<
-/Font << /F14 37 0 R /F8 15 0 R /F27 31 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-59 0 obj <<
-/Length 1790      
-/Filter /FlateDecode
->>
+65 0 obj
+4702
+endobj
+69 0 obj
+<</Length 70 0 R/Filter /FlateDecode>>
 stream
-xÚ½XÝSÛFÏ_AÞ¤,KwúL§$˜–&ŠÝv:M'#¤3Ö`$÷$á0ýç»'ÙÆ¢šöIw{{ûùÛ½µßÎ^ODt8I(ƒÙüÀ|'Œ“è "GÈ@Ìòß­Ø=´G¬ÈõÅG7ð¾±ÿ˜ýp0®“OŒ<ÏI‚À#æɝ*›EݨRi¾–- •ùTé;¥8¾åO©Ö¼Øa.j壿H·Û)¤ô6-Ók¥4Ï÷®²öçMÙxöé5Éy™tKp–Ä×ù:h‹wVJÏ+}{©þlUÝàÀè÷×írÕèV=éÑ:-š“J•÷çYÖjUfj;dxóñ$;GNßÍNÏÏ>]N~úy2M?]L.OÎ/œ?¶¡TͺÒ7N½h›¼Z—gU®êÿÇ'ñ66}'ñeBÒ"é$äÈI)­Æ±u¿*²tÉ„ªmV¶gµÙÎù«>§·«¥ÂoùL»-®xÝ°.+{»êÆlAJqƒçæV³-'ò=ŸDG6hÂf_‹€‰€–‡V-#À€Hœ8Ž2ÐsñðÕdöêosÞuendstream
+xœí\Yo]·~ô/ܼI…Åp_…“ØiZ7‹£4(’"-/‚eÉ–¼$íŸï×!®•ØN~È	—áÌÇ™oæðêÙ†3±áø/ÿ÷Þ“î¸Í˝غ›¿Õ§Ç;ÏvDþž{o>9€ÒoVZ½9x°#ra4³~ã¸c^<Ùùa×ïík<wn—ÇGŒÞ½¶·og^…]7í [«l­?îµækó¿þº³/a6ÏÅf_ÈÍÁ,|³u}Ùf¸ßZO[ëóÖz»µ·Ö‹ißû­õtlçðh%³FìÞk}OÆ%œãa9Y->Þh}I‡£öøí¸ÍØ÷¼µ.ôI‡›{Žqô 2l”B®Èuß;
+Û=nuÐó颧uÐ ‰áÌr½û'+ ì°,¶uþ¸;@± äîèfö…HŽ’<i0:œâŒ´>œbò¼µ²ÖzØZ	vŽZëeg	ϘîÜÛ_Œ=±q>Óý
+ˆ^eÔÚù™Àèt†½k
+[ÿÏG‘ÑëQ½‹Sé¤ìO%9ø^*¹<•8¨ª4f÷[?®S%gAªû}ß¾+ö.£¦þ–Lõ¾ï¾Û 9çD¬µ.Ì´•SŒeIºm up5~ÜÞ9øã(—H0ç/ϧ{xºm¿ZëٴÓöxgD;åYk|1;mSJAcêiʧÅ—‰d~_yC5_´–ó<sÞÐÕΩˆ³ó6±MŽò¬d–·å_Mg æ&(»Õ:œM·w£š… ð—j¯Zã½Yˆ~1óqÓMQ=îÖQ»+£Žé¨Ëééµîˆ´4Ίî7å
+Œê«¶~ÝZ¿n­$À|Ñ óéÂ)ããÁ¢/>~UMòekü‰ª¢2Bˆ¿©ÚùŽ:gâéË ƒ¡1ú‰î¥4Þ¤kÖÇ[u¦¯™â ¿O—ÿ¬Z?9ËÔn‘l†y5Â{ôE§F$NÿшåñK3H >˜ë¬êƒŒ¿?c	ƒÇ/jêUóÑaº<\gMI<«¥”f\€üÒ1)Ó/{û’I®¸Ç.˜ö†£«àÌiiâ¡LJÍ-º“† 0ˆ(©™·\Z_ÔñÏ÷ÓÚè@æ¤oA
+Ådty´w4”’́–Ä5¥W»?7éÒòA~‡m¤é%ÌtEÖÁÅñJZKJ	ЗJC¤36ï-v|ئ|´'
+D	o«tNç9Q
+ §íJå‰ÈqÇT0¤'™þñ*_€ìE"î²j\аd‘_+Ï´-€V·’,Óæ¦òfñˆ3Óp%ˆÕN«®Öi®WÁ^úºÍ>ŒWÁ'À|Û`N9¡§=r’LO!$'­`säÕìû°¹ÎóiâŽr]d8ë;,C8YøÃî°aìþ_ÐÌÝi˜%üÿ¤ÓL¬’+ÈbÈE¨Cv“àÜgÐ‹»€Ù	gBaòh½p È48³+
+ÈX°«°ˆ	i—ɶh:àýfY´E{:H¨,d*Ÿ@2+ér£&÷ÓHÆ Ù‚%pèˆKYyf+0Nº@YÕ0u×—ÍW^1o¤ÙÊ0ãaTzo…į2øRÂÃR€‡}CcLÈ
+Œ—žnñ9¤ä– /lH²±ÓÔèc¥Ê‚b.dçy7ПõAk%ÛÜ)2:äž‚°—™ïæCtaX¸ð—––ºÔ©!Œ2¹²å‡h
+Šó‹Jòñ³–a^rî#ªÌ^ZRB1®•­33lÂꬮBj1	*„7R^‚ÜI*.y~-Åj…"¾…Vé_Ô×mHÛ[«XÑZÇ®D‡òè€ãŒgÑ؇“òQrTmÑúµšQÛY[jë…\+lÏ:ñ“èÙ‚}ü®hz :="èYW~Ýï
+ò›Á‰~z
+£ø£QCXÇ½@›¨MQKs§­ì{:)åÏŠÂ×êÖ¼V¢ÄoÄiâTV-®ÙTJLÓ^_`ù4âD¸„%"(J6€EB F»+EkédöÇ8'ŽêÝ™à¤VJÿäX‘ghŽq5Ò?,)„Lµ@œßWæç°ÔýìCº€±inápLkD³r`®RÐ9;g^$iƒš‹Mmª¶ÜǶ %+ˆ¶ynü¸e\
+–¬p-VÝÐ,Æ»P}Z1ìÝüVšô„¼ÌôñNãžÏÝA¬¤̲9*Á’ÖJâ7gÖn'Å/€™‚à·m}•d…t N¾4€/­`ö}p®®É@;™$Mg3§ƒ<×BÄ	ô5B
+¯‘¡c'ƒÑñhÔ‰º³ÜÝ?îV u8*Ãd›Ûè”$»…´+Òçm\SµS^BÙaY0;{ãô@>e̸°6u‹¤I³+æ¾ÆZ|û¡<+!Ù"ál×.¿Ì»0EhEçŽãv*‡ìlw8 'd\nqÇ¿I´ê„ç‚Ù““F!Æü¶÷­džœ'¸!Â~ÿî+õ¢Þz¢¦s[H×ì2
+yݶFì3Óê4çùB‘s³°“À»ðjCÄ[L•*+.øeDÉù‚Wª·+?KL<£MfŸ:³éë=rù`
+ͱþîÀQÛÕºÇÒŒ¥oüï•bǍhÙÕÊèœÒèx¥‰ÀhîUÇb0Î߃$b}ýƒ¬?³m'íãÑIýL7?í­Šy˜1Ú¹‚9²×Èþ¤‚t[¹E½gHù¾ «,_ÙÆ0…ÃóGF¼HåZD]©MH5s1¿‡Ñ!C"ma÷ƒY©pZÚžýVÊà5$¯ÉÉeÝË.“;¾ñq¿]ª%?®&?'!?UzÚú.~L~2^>®pÏfÒÌîy,(´rÁ5ZrU1¡ý|Ÿ¬ñ`ñ8ü0éRí`ßýÅæçÚÔ·¦ÐC°^õÊ!s•ëÁ—+GpýÂk*G« +{=šbà¢m"ÿˆlø2ǣƿb³øùvì°ÐÞ8ï[>Ýg&Ú+6¡ƒÖä¯2œÕÆ-Ê¡Õ+¯Ö„x¼’¹ÙWvYÌôñOC'qó`çø÷_ Èendstream
 endobj
-58 0 obj <<
-/Type /Page
-/Contents 59 0 R
-/Resources 57 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-57 0 obj <<
-/Font << /F27 31 0 R /F8 15 0 R /F26 12 0 R /F28 62 0 R /F14 37 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-66 0 obj <<
-/Length 1066      
-/Filter /FlateDecode
->>
+70 0 obj
+4060
+endobj
+76 0 obj
+<</Length 77 0 R/Filter /FlateDecode>>
 stream
-xڍU[s«6~÷¯ ox&V¸œ·4q:nÏÉÍn;¶“¡€mM°q@œ$ÿ¾»ZAšsXI«½|»û‰{|ÜãaÈâ(‘žŒ‹U¤¼|7ñž½€E	O¸Õ:–áôy¢ɸ„Ý©bR	ÙŸ/vÜ»ª'÷ï~›ÙàgvìèÇÕäü:ñR–F"òVkOð„ÉH*O†œ%I¨¼Uñ§­7Ý”ûM9…¡ôù‡éLJéß”f*ÿe*b¿n@á‰ÎÛÒ½ßà"ôë5ýË×lw¨œŦ¯~>¿æòÈ÷,J!0Á¢o¡¸õýWÀcR>ŽÓIU¹ÒèLs?7uóFê">Ò—’É UîB¡qjSHH.œÎ‹6[–‡~^ï1MƒNêŠöÓlÙ¤
-íÄAÄÏPŒýåíå/KŸžpz·ãÆ$*…g!€QAä,U”l_ 3!xÑVÁÐÈ3³1`|¨IÖR¶v‹¢oO§­]`4Ÿuî
-VhWÿâDú£5´"F‚Pá·J;´—eóA.!™Ø[ð—ZTº5å¾¥ÃþÆe…RLØ  íÔšcƒvš² ™3¸Õ@Q:»GÙÛ€hE–ÍHg}e„M¤©;ðÁOÓ
-#q;¥¨6ŠŒ˜ŠïÁßÞe¥KjQìžÀËœD 
-­ëf×Rï
- <w½Ôw†;-î`ÑmÏ€©¡©ÕI¿Æ€¾¤¦N}ÍJp…©_cH}UOqʤ}\ø]ÀCÅÒ4MÞ7Ú5°e¥·ƒÎ³ÊqPglg¾FI´·Ó›m%,«šr}rKœ¢'×xËö©“×u…ç5Òá‹Þƒ¸ù0’÷ŒK–>ÞL@ßð8¡èò¼lÛuWUoÓ™
-Ê‘5›ûº(Ûlîÿk¸Ó‹ÿtº2$æºÉ;mÆoþži¢iÔ„Ö Óo§÷PÆØû›ü+7ÃÀ^cíÉ]òzqw÷qqy±ZÜÞ<.ç7W‹›Ÿæ÷¿Î—«o©;5ø_οͯÆB{¯÷ñ/hÑúòñnþp}ûðiüÆüզÒFÔ3”‘pd
-¨®¢¢&0D¹h,qN°r‘“vö <múÀvG"‚ÔZmkÊ
-¾HÀ¼HæÛ’dkéÙr‡öyUâ 'P‰mM´ÕÜRskSÓwgqèi‰vx««2ô[78è)²Lù†J¡_8CØòµ!ãhˆtñŸ=½Ÿ¡ÚöS‡œ,º‰Îj\YO´59îoµ);·‹ãüN
-ië”vŽ 3£k(*€Vö´N‘ùé¥Ôö‰ƒ/ÚJȇ*ƒØÆ2¨w=„ø\œª7îU¶rÝ‚‡–†ƒGKb) oÇœš˜Û÷c2_Mþ7À„tendstream
+xœ­[Yo7Þ灁ýó8³È´yy	r8ˆ7»›K@‚}°%G"Kò!ÿ~«xU±›=#{ƒ+«mœ|ĵôd>=OlV‰:h§&ƒïö°†ÓZínòÕ„Ä+äjßù^KPj²¯2ˆ,€]R*4
+@ÑxrÎe^;[^šÄÕ4W:S×
+®°N‰’Âöì_›³ü¶;ËZZm™AaªIwIƒÏш¡!àª=°G‘û—÷¤äLŸéâo›°^‘˜i1XN£$³bœf`¸„ßáw:Á‚Ù[… Ž½&ù¾)F?vàÎÒ£GsB¯zœ’ÒÓæäÈåp^­éã	ôYñúÚ®QQµ	ÑRð :ŒÕ3FÉÓ
+w2É	EP.k«Y¹«²:‰°ïTÔゆôv±"0z}Ý”næaÊƽ‡™óÖ	b²L
+'k=é;<ÿÎmÀðZ±*Á0šbÆã|æ"8°4‡¶ÚÍÖÅ÷wíözÏe4àZ©{*¼^ò™`î!	œÒ­!l(\Ží؁’:H;ÞÌ\OÁÌðÈK56hGlë3 FÞuª—¤Ò¹Éʍ†qS¸ƒ3Ä%ƒQÇ+öÛÛ½å> X-k%s4‰ñc.â%Œ=TÚö§ÃÝÌí`RìÚ÷Ä胄¼#ø[u"1>yz?žÌ⎎ñÕO¿JÚzªßáÁ&m'|´?8ðd`ÐÝøØÅLÒÁN¤xv¶œ¬ç<ÁèYGÀ4za‡’0fa“ˆ™Ë(cvd¯Ç*Iøª‰¯ú•`©Ž³èj€J³ËQf xÙ&1ÇŠÇ4&Ñk::y7HŽš¤khEYvÁ<Ù:àѵU…E!ˆ–%öYÓy±¤»à‰‚oy›wëF én6­6„”áÕ•Ò³ä©fR.„zÞš™×`RÎĉXz}B5È%|ÞÉ9;Ãf u2Ƽ™¤ÀÔ™g-KÐbGr^:‚i©eîQž¸Ê‡í-S+M˜3 l
+¬“ÖèÓxsab,K&Cw¥B0¾<z™båºÒ%l$À8¢¢íÁöŠ	L‡Òè'ðCå“CÁÀ *Sƒ)¤#SJ&Šqõ‘2œÎÖ(j¯y`õŸÁªz+ez±K¹Qµ+(UŸ*^’Q?.òÿ·†k¨^"\βëŒpB½5é¸øuY±
+’%ZKeõu‘âOÝ(¯[¤7ÓÖ#ŠµbAJwø°¤×Ëå¸ÞXDl%„Ø+›„ÿëZ´…Çü«"]*€Iê‚ÄÌl=Ò‰f§á™X”z>4ÕD?Y.sÁ‚«jŠ/zª‡ªR×Ìüäâ]*ê-ý
+5Ä­Ê­Vávºnw”¡Ë¾¦ˆÀbêöi©ÎeâîTtHý]}aak«}/9ÿ!Z–cŸÎŒ>®É¬èȁžNøîm~—^ƤrÎcÊ–»˜`VìwßcæXØàj’X¥Ê†M”±‘9s6L¹Ã¶¦VYB–=涝çE^ù“»^Æ5ÊZŽÕK1³å»Nbû¸¿rÐÁŸtÉ
+A\-ù]‘Õf7Íœ:†=ˆ³öÔ­#(Òà‹ì3°blôkAô"[9„´$I-ëV=\}×qV›¯¼êå°|±aº:Ä»ùm­iÆéB¶Ë•¦äXJ`Ã*5—¼-Õã¤ÖËæîfÞ¤™9Â|yä
+›¬1õڐ-/qU¦³7WËN—ÕŒ,çSo€X[Í<d=b©jñòóÞDè¾W±6 QØ´˜¨þ{[gŒáKßú"B¢ÅrÏJ™µ\ÌÃ'!¦ËýqØáC£ïiôÃ0Ôº¡Pkñ+ƒµ¨Ëx$"òLJ ã”CáãZG+nTüÓ÷ý,ÃrÎC%gæâíÂç…<•´`õ˜aÁ%Ç]¶«Ü¯ý¬ eVÌ_ø/«#€fr–Ó>l–fº=žú.Râql˜÷vÔ„„õ¹ˆ…Žr¦Ã]£^ê1^èné{gÊ’&¢qíòrÙò_2pÊpà³dU­±™:å,8§‘úÍL#„~ÎÛ•ì3Ñ|üÁinI>ÍrzÒ¦:uïÙ‘Ëэó壌áZ:]Kˆ…Õ0)+ Nt½‘b?"
+Æ4ãïiô˜‘JÜÛHYD5ÔŒ>ÒŸÅ­ÀëÒŠƒ®‰õ¹
+ÓÂͲyãLŸãC9×þ¾ŒµèhCk”ÿyaÆó±šE3üQ׫ñ[¶ÂýyŒ€‹Òo_`w|Š]ZL‚Ë3FÖó6½ÄÅ®Õ4úœ¿ÕØ®L^)˜h-@ Ö&‹õ¾€'Bê:yt¶ùiór+1_¥ÒÏþ€	ùçaÙ-ÌÅ(þªð«Ç›‡ÿ½}óêîÙæá¯[¹yøþï«¿†?¿Ùþmóèñö§õ_Æ­EöÛÐý‹Nf«P¥]þ‰¡Ùd‚E*䜛R&wDZû+
+ùÑ›„P3åÚLF(lÝSìDê¾°“ñÖøÜ(dJ¥Ô1`$úw#R›¶‘ÀƒFM#v<½On¶†±tŸ
+§‹Ô•+gÓž_ì±A„räØØ(&
+  endobj
-65 0 obj <<
-/Type /Page
-/Contents 66 0 R
-/Resources 64 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-63 0 obj <<
-/Type /XObject
-/Subtype /Image
-/Width 4194
-/Height 2458
-/BitsPerComponent 8
-/ColorSpace /DeviceRGB
-/Length 279588    
-/Filter /FlateDecode
->>
+77 0 obj
+4168
+endobj
+81 0 obj
+<</Length 82 0 R/Filter /FlateDecode>>
 stream
-xÚìÝ÷VI¢`Þÿ!vf'ì„õ’³ÉÉGÀÇ!ÊdÄpu–s9^f©+t÷÷ýq÷*UWè’Zõë¾¾-o˜-È¡/òÙd[™”Dª/°>Ñæu†ÍúìÔýá$™Ú¹Çâ¯V=aÔvM‘’-Ÿ×¹µUä³SДD±M—ùy*°¦´y•\S¤$-ùc0›rø å-9û%œw
-/ã’”ç©LJ"Ÿ5¥›j綦Ø;-ÿ¬tŽ-ôÅ<Ú÷}‰Œël®ödÞ	ëvÿ[—7%‘UwV“˜•/éÉ*ÿ”D±­jM±¦ä¿¦\KI-pü*[¾”„­v±”Dª®‘’Ès¦”bT‡®˜5EJ-7zùã$SÛšbM©Àšr-%-)³\‰Ž7ùeؘÔ£ÍßRœ©Â•Yöõ(“‡[ 5Åš’|-}È©*fG«”DǽPøx’’(éLÉpTw|*³¦XSü&-â|%o¿9ÜÍ>Ÿë6ÝT t-ÎäÊíF÷9̾Â÷“Ç™ µ]’"/Ö”BjeM‰°~-hMé¾bÉgMžÏÏ‚-Ú¯hë¦Ù—°¯óu&HÙvmkbÊ--äö”
-çC-ÌDôööŽMMMÍÍÍ-//?)¿•••™™™‘‘‘5…qÅFV‰±ÿÀ3ÌäPj?hÃù-IFŽMMM-,,ÔöiÒj¥™™™ááaY	 Y5&ÆFüÏgó—Å[¥îK“’-uYU5·¦+éù+Ö¦@»»ý•S1¹ÝO{R6:mwßg¢1Žwßì¯ØxÅ‘w”©1†Ýo÷WŒAûtÏʐ6…§qf÷uåÓžÀ†š¸ûÙ©@f÷•¶ìËß
+Xv/ÿye”ÑÚwÜ_·•E¶Äëœ~„pÖ†dghƥ݊H¿ýÃðüvx	Ý
+oGö6)“•'ûGb+ÅâüÒ1ŽúXóÿÚÊŸ÷†à´.îþ]}²™¸¨ÌÈ9ˆž(*µé6Ý·7N9ïCó”¥:C1©Wg¡Tå1Ǥ¯Qš:ˮ˨nt ÎOöNi§=õ‘­‹#×|ŽW:„´{Uu<íæE”™7ÃÄaç’ŠB
+¡¢·OìÖ(}ÙtuHt9PÇÍþ
+ƒ÷:·vƽf`L-ì«]K¯›ÍµíMKͨ$¨Vá§u(Ò$3³s6-ôk)‚̝‚+¥éÓ³Æ5JUhÝu[Âq…eT{&©	‰g Ék·ûGÖ\‚’>ª˜‹;R,ÌãñH³–ptUî‡Jp1HŒºÏF®M¥½,ª”²Êʇ5Š¥ ´JÙU)gÙ¡Q’µâè”ÔïF­Ð‘§w\Y8›ä•Q#Nɽ'º¢<ù«š¸z‡úã>"þD¶»[¡Ú¨™Žáð(žòWä¸ÀÑ‹üyÒDF
+‚+Âû£9‚fŒ¥Ûã°š•saãã&qi’Þzß-8&}®»ž@z)µzé[’y^ý½;Ž–y֏붇Äñ(´€T«Ÿ+ÝmA£œu[+gÞø˜o qÚ¶0¤|[Ћ|Ù.Û™§ÀaµÜ
+ÇŽiȇÑݺ- ¥%Z˜*Dãµàéâû¶øPsXéÙB\:¬F
+lï°uUuÏGN	”Î_+á,wõ.߀ZÆõ<o•ÊX¬\ûür3o•¬M‰7¯¯"åÒqcd0Ô%±GÖµ`_ìª¢÷•÷X³Wn-FØYè±µcY
+R+×ùªÅ ;†Á¢1xtÒäój+eϽ¬qš._®‚žK€2^µÀt=šyuÃ¥nZÐyÀYñ·r®õ]Ý
+øjwÙPÀ{mTôYb“ð"QŠu)Ý›)uË·Wú˜"ם!ä¯{ó®J9벁¡Y'Ü’\k|Þ[^Ïýü±ÜÅœOÑ2f¿Ü¬÷”Ã^âC‡Ì_õÛg8$k—ûí­Á1Šé·×ã×zäììs½¹ì0¥@KÙ·½š[´ }Èär]Žg
+Aù©!C¥‡–’
+ÂœæÒ¢á‰	9$øÖ£¿EÄAp(=ÚbåEb\ÅŠ
+›(L³ªºˆóÙú¥f6U
+¨f§/Š“Ð>ÅÔ3mU-]QLô¹—mÕL£œUÎ84Ë2o;«˜	Á‰ƒÝ´˜‰:§†*ï¹.ˆÚ’žBpKS­R¿\¥rZS¡sS±9Ü+¥¾±îêðmÇ[ðÕ(?WP­^[à›§¨:*¥¬*³W+”&CÙÕãÛŒwÆWnçÏQíãWožŠj"TBYS&©V(õ}eSn#Æ‚lÎx%+ÕØã*³HíýR_7O0­Pêûê®Úv¼±´7rã%v™cËLñùÃå	U
+ñ
+Å0x&©PÊ®F9uÚ4˜ÕiS;¥EO2T6EÜIßÆ£1“Á+«H[Ÿv¯;
+¥ ¡ó0xx¤Ko¿ƒ_3ÑŒr©ŸÌ¬ÍGæO›h&ÃóçO4/§mš&&ü<
+sÊ<óúl4쇃;íÊýÿ®Oµ†q%¼9•Þ¸M£›:Â^5ðrøšOuQendstream
+endobj
+82 0 obj
+2238
+endobj
+86 0 obj
+<</Length 87 0 R/Filter /FlateDecode>>
+stream
+xœíYÉr7Íy¾bnݍ-·HVleµl&9¤rHd[qE²ã½*_Ÿnp°9L̈Ô)å*“zzðzæu¯•éµü?/oºãǾ¿zÛ%´7ý×åÛÝëÎŒèqt²ä	ÆöQEŽúåóÎŒãA…Ð[o…~yÓý<|¹+ÒÖÉŠ{ƒèy2oˆñŒ“óîøüÛþÝ›÷ϺãŸzÓ?”ÿNòÇùýþ³î켿`[&¨µDÊíbÉ©è1Øþ#ûàƒÎ¸T´½”Çþ¦"HN¹Ø_w`Å9ÄDÖ%0Rfä÷îÉüí*@yvPVÿEñͺ-~Dº8Ÿ|½W~ß$­Àúá{ÙACÁáðhqä”ÖÁ‡²…" eý(±<1¼háSÆÌ+ËãPŸ6Þ/Î åqÕL%v0ÓÂÍ …Õ1¦d”±ž3‹43=WÜ@:J7€ãœŠìúÈöê‡Üa[än:eÙéUÀy
+r'JÊhrq¸ä|	ÜvIº\ÏÙÀ‘h#±ÅåS6ð)o71@ûº¤¼ÝÄÿßnŽo7§o$IN‚Áo$w*»[Þ“zv&2òùé¶þksŒœåäi¸ÒŒµÜ-°hQ¸èþ;¢`vendstream
+endobj
+87 0 obj
+1745
+endobj
+91 0 obj
+<</Length 92 0 R/Filter /FlateDecode>>
+stream
+xœÕ\I³·Ι¿‚7“‡h¬¹E¶"+vÙ~vª’Ê!‘m9I.¯©Ê¯Ïט,³Pä#g”XU&_À ÷=øa/…ÚKþ×¾|³{ô¹ß¿úi— {µÿ$û×êÿýèýã{LPvEtÚ™ýý·;ՏWÑ
+·÷R
+ö÷ov=üþ¨gÔáŸG)¼1ѫëã!*e¿•0ÁJsø1µ¶tøæxGÚ	
+t 
+Á~{¼3¤`Ih%µé×ÔV¾Îë”oXF	,¨Ãá-V4cãá'|Ґ~×X²zø¯Ç;-´”®ZýeÉ{SFu5ôû‚ÑÛüü·s;©&ý<Œñ±ÆãûŒ/oY“pQ×-»/³ÿ^þüÈ×yÉŠðeöwyàpHkoz¼=j+¬ÛºÇXÿvÿ‡Ý“ûÝg`ö«Ý{r&
+øγöŠÈcã{½2°X=~¶{ôìûŸüå›Ý£?ïÕîÑÇü¿Ç/>Ädzö¿Ù=y¶ÿk©a!'¦^‹øóüµœÀ”`÷ÿ†?Ý)‚ˆvï¬r ÁþM‰¤Ý¿Þie´0qb(ϐ<+C¾Û}quqAh“Ó¸S˜ßeás°D#3·øëùwf°öYøK…2ÁÑáÅñÎ	)ƒ™‰LMJƒÉy
+$Ã;'”šƒdbäY乌( ¿ˆº¡ÉçV–7תô¢Æ³ÿ§Œüõ¨ôÆJ»:»£mg4óé¤dWÖjXhßé„s¾¨^KÎH L¬É™!ñˆBžæ …œÃ¬Û3ê19?:BC­tM®,࣌|²´Òûxø"Ó¸›M}ì'CÄŠµQ„Š 0`o¤"ØÒ9HÆ~˜tr°e‘ãÙñƒçZ;Çãš2E
+ä«]qa/‹ÌeÛý	‰“Ò»˜Za¦¯Q`ª\ ™žŽØ(ÎA2A󬛐Ø(°Ë·Ví1;U ¬²«trðVDú ã<¨£
+ƒsøº`ÁTTVøb‹Þˆ†mÅçk ¢à„…H1šÎñ¨’Gi	=a—3…È„Óì†Yr•$:ù+Гû‚Ð"ð…¿:"JB×bh)Ž§'öáyvϝ„H-í›,ñ~Wß7„’l»ïZLjóö9cœ«G,íßq ±Áþ±¼¤VŠ·9A÷³òûSÌ…@†%ÅÐL°
+ðÒÀ'kðz’ÍX" ÷GVUV•Ø¯Ò Îi\0y”ù9ZBØ,ÿ{¶hî´)M^r$RQæ/œ¤¨`=¾:j/j¸:šý2OÏ4¨œÂ«6È@(ìm öÛ‡YŠ ! †„eÛn‚LâÙý2ÄJf Vq,ûz÷mãa`,d--VÉÃ\Ÿ
+h仈sð(èû–@Š­-öXhV–+LµHÚj$Š7ëµW©©öÂÐLµ·C¼Ì—öª›øÕ±J(;+~›©ïÈn!¸ß‚Ïø^Ý7˜O¢•%Ì°R›ˆ0—5ݵ÷ËT
+¡å˜‡ Tt3Ê{¾÷
+2'mad¸¾ÈinWO±DS*5QŒŠ^&ÜÁ~èZ•ÚZ´Rà1Ø0Ԑ“֐*•A‰æ1pœÍaLöjHõ©´Úxä-ÂXzo#žwºléŸç¤°óÃoSéñ¡8²‰ð@ë–l¡±&©
+Åum¡aŠÆå-ÿiç×Eú2E%9
+™@°MQ‹GTU)£†È‹+ÂB#4Ö,#¦N)ôÚxin’ñ-^Ò¶*	+QÁ¼‡Q¹Q¤I5Èk#äNauv äCÊ0wBxVñüÍpËBT	bS—ÆX¦×¸`j8¯0.­6y“‚)r¶@ Ÿ¶ï—~O3¹J1P‚Ë1&”	ñ¸0H6™@‘ºRFQt„jBdOøa¹ÊJ„t¹ç.¦d<·”ÈY-«Ö‰«ÆX’Sõv¿ëÆXã:“NYåêx:‹¬2,òe#ñÕcˆÔL&‚†Äùµ‹l.l€Z+!—¬æ6ü2J ›¬:þ[÷¨Öq‘¹Aã¤È¦½÷2«]U…-¹æDdÏÁ7ÆÔj±6¾ZêÔjѲí<‰WpLj
+Y}Ç)ÍŽ×/¤öžªdqƒëªôÒhÆÜTz™!y”±Á³c›d-̳n¢—äR!µ&WU¬ll.†Ápp˜Ïä¸8u¶nÇt>°6ò°"©Ð:om›_.Þ‹ÊY¼‰+âͶ‘tKÇ}çµtƒ²(:ÉΡÈv\%Ûʧnr’†»J¸ìL:ò\Q¸
+¥á…-99 Zâ—ððÆm‚BMÇrZáqnCÈ’ŠI~£ký­³h#Àj¶þ3€Ñî©1×Þ=Á¹øv÷ãúGÒô™”ùõ,6AË¶ÞÍÈÔÈöÍ¡v²É(ªÚ-̐/•¿µvP{îç­[@µgÉบ28íù\¿kFB戇îÎ’®Þ¦êà¼P”Ö¼IñÛ…ä>5áK5óÊV­žŠ!øÙFÚ¾»µ""'ëÎ7}´Úpg
+U}´eTß6;pžncÕH[ ×å4 e)ùõ`7&å¹åoÅ]Z,!\2ZóŒ–CJZÚí坴ScÁ'Õï>#Ó©^¸:¶±{%ç$¶›‰ùø­
+E[Ð@{#Tô
 
-ÍÎÎÊð—æææFGG{{{Å%(VO0åªCèš”1%‘ó»„èåŠMÀЏÞ(ûôwtE…W“L
-̹#¤$-)¤Ë‡k”:%Q‡^Îp&>ꊚyNÏî;QJ"«ƒ
-ÝP9tD¶k±I-T±¬‚®•-)9ÛKë©RµêåÜæcª;_Õmzf;6ʾ HItÜn9,ÇÆ6-2Â-’è쵁ª³„È…KIdÞP	ORV“’ÎŽ’|€ó-R®”Dé"Æ<-'oÌœß7N§˜k-¯U/‡h¢
-•êQŠŽ‹pb¬ÞvúÌÙLXZ)~÷ô‹--Ì—œ§­”-Q¥”čýýý‹‹‹Û¬DëßGGG_%FëèÖÖÖlÚ'‰ùùùþþ~)	 +R-øzŸöÀÀ@•R7öööNOOo³———ÇÇÇw²»»»¯^½²uŸh¤$€¬HI-$%Ñ¥½½½³³³›¬D빇¿õ7röüùóÍÍÍ>´šèË~úôéÍ›7­BJzøR-÷åË—›¬ÄÅÅÅÑÑÑ_nûoýÙË—/+œŒxöìÙÆÆÆû÷ïwwwFɈÃÃÃOŸ>mnn¶Šªj+-..JI-¯I2b||¼5)~üñÇ´¡¿¿_J-’U+ÐÎ!Þ=æVudB}Nõñg_>³>Ûs‘“$-'#fggGFF~ÿý÷%#~øá‡G-,,tYÎR­'%qG)î´ªhç¢jç0«72©ÞÙÏi?«W
-dq†-¯®®v’h£”ÄõÃ÷UvSNòz¦ÚZàNÔÌS	#©F&•?Zʲÿ¿WÛbáÎÞ%ª-yÓ´’ˆ0‚F$®ë´_½ýÃìi[ò¹¢>*¿ÍZõPóµ1ýP±ÓK¶ƒÊh---Oå	¾â—ÝšIØgw´daªô‹Š–¶HV¤J—ŽkŸXòíÆa+*HCˆH-Gب\îìôïY¨(%Qî5FNâ„z‰»\Ê>YQÃõPŒZR
-^µ.½Ý[•’ˆöj?-)%QË‚OÏYƒø«UMMIìµãA
-S×
-ž”„Ï •{JBD-/%‘ÝÊOÊõ¢”«UOIì唐’¨kÑ/òÚ¸Ïhµ”cJBD-–¸rêŠêDJ¢Þ7¤W]¤Œ:jšoê
-%fEÅiˆ?×ðy
--ï¿ÿþÅ‹gffŠ¯©·¥¤$%â¬!Ä\÷(åÏmh à+EñS•>Ó>Zy¤$0ŸKIì‰H-V´³4à†Òæ”D„¶ó“---ëP‘“LI„jåƤ$ª®¥f7\‚³ä¸/½ö`]‚^Ý[yÎ-º1;;Û¤”ċɈâ¿çΝ›˜˜XZZªè¤R@v,-vñâÅ¢—_¶ÏÝ»w{HI\½zUJ-Å¿.,,¬Å&%--&ÄOIܽ{·ÿþóóóU§$^™Œ(œ<y²è‡Å—_¼–›ÞR×®]“’-Åq.^¼Xªø®µè-%±¼¼,%-Å—ŒŒ\k)	-Ý$#
-'Ož,ºÍììl§ÓYk½Û·o÷’XYY‘’-5Äœ
-2}„Þ-&HItiaa¡›dÄñãLJ††&''———ךå¥)‰Â+¿qbb¢µ)‰z#¥ ¢ò×^3=”m¯Ô=üÕÕ^²"•^Q{Ráç)	)	-VéÅ6©gÒø™Ð- £Iôù-Ñ*-÷"-wü&è™´a2T3åε°Ò"UzwH߁}-†--ÅÙ/^¼8==]|ñZn¤$*]£ˆy¢¶±Ò_iâòHI4`V©ëÔ‘Ö˜žcÅ-@Ý³ÉÖ(²NI¤l—8å‘’häRp„Þ|F
-˜’pW-Ðì”Ä^#‚RÑÊ#%ц‰=ÔèhmJ§`-÷ï߯«ê¤$Ò̱R5iZ¨÷h{5E–JJ-Ý--g-¡"‚}á)	qùãG-p‡‹Ç¿EþÚib×p°lJ"ÅÞÆz0šþ‰ê-1š:ˆèíí-•JƒƒƒÃÃÃccc“““F㇫\†††úúúÄ%-ýýý•Jetttbb¢Í}"ž!zÇZ­V.—{zzÄ%-q	-áò1ò†ñµZív˜:;;»¹¹)¶ %Á³EÓaS92=ÎÉÊm7C/Ÿ2(-…@òR-…G¦$"ûûûWWW_¾|¹¸¸8<<\]]µÎŸX¶–ëïï·µ€y¢pÄØd²8C¹khh¨eÜ877÷éÓ'iˆfÛCØ6"ªÁßS{8¢9m)—Ë===“““R-G@,Í'S•[Ñ°°ÑhÜ+ÎÌ̬­­ÉD„¶—ÄøøøÀÀÀÛ·o“EDï;22R¯×c}4w»{óæMË;ÞßâDJ--CÄwïÞmooËG›’xä8¿þ—F£‘ä†o‘â.MÃÃÃf7-Y	€pæwLûê¶ùË­¡¡¡–1áÌÌLŒ“)‰|lQ*•žºmÄ]ÑkÇÇÇÓúÑEn"-skppðþ˜ðãǏRççç]¾mD¡Pxƶ-ŠÅâôôtŠŸEJ-|‰h¤ÝÛÛûòåËÎ…#^½zU*•¢	ïôôtF§$-—´~---£»™™™µµµ¼¦$¢IS‡ÜSSSѨ{dd¤Z­–Ëåb±ØÓÓóöŸ¢ªŒþgT›½éëë+•JƒƒƒÑßONNæ q_ô¿9ÑЁ-*ÞùNS4~«Õj÷Gw>|’àþö÷÷IE±XüÞC7-…ÛÍõîzÿþ}¦S‡‡‡]¸mD¥Ry̶w½zõjdd$ØOô¤„n-5õôôŒŽŽÞÂ-..îììdq~Ô=)‰æ¶¥RéñÛFÜUýít8@OAè|-OÚ6â®·oß»…ÄÝméž1ƒÐ-Rе„#@×~CžÝ*‹ÓÓÓ-£¸ÙÙٍ
-)‰Œnq«§§ghhè~ýkttôÙ9kÝ-€„µ,´˜ššÊYJ¢éèèèêêê6+qyyyrrr7(q||üéÓ§¹¹9«÷‰×üüüÂÂÂììlË/•J¶“-ÑØ{xxø~à%C†††Úœ>è-í.:Ô¢3šÑùq¼”Ä­F£Ñ\ƒñþýûÿÌ»ýýý‹‹‹Û¬Dôï÷³ÑŸ-..Z“ÓÍfffÞ½{÷áÇÍÍÍÝÝÝãããæµqtt´µµµ²²277—֏Á¹U*IÈeÛWP™ž%Ýêï￝1ÝšŸŸ†…!§$öööŒê³®\.Ç2}ÐY-%ÅV£»¤¯Èq^#Ý«Î"F)‰»>þ|ssÓÌJ\]]œœ´¬–?::Z]]msB077·¼¼¼¾¾ÞÌÈ|þ–ÃÃÃOŸ>Em¡阱±1)	èæ¡£’„nè
-”R.gLM===ÑpîþïãǏ¡Íq¢y”D¦
-Ä‘xd'¦í-#%‘9•J%™ˆDê7g-ããã-C¾hv°¾¾.%Á“¦	ýýýIF$ÙËiø-­Í«]JBJâa'''777_¾|‰þyvvöÍ}
->~ü(+¯¨<—––VWW···£þü8ÇÇÇ»»»ëëëÑk¬‘F£!%!@„#€'uJ©Û|s{OOÏèèèý_4ŽMq
-sqq±³³cN‘	SSS}}}ÉG$Ù×iø-­ëÓð-xj÷¢”xö$뮾¾¾©©©–1á»wuç¦$gggR©«Õj½½½YÙB⩝¤&-*á-0^ŒZ8)‰_ÿåôôôlÂöövT/Y¨333³¸¸¸ººº³³sttK2":ÉèT×ÖÖÚÉkdH£Ñ)‹¿ÿþû‹/þãA¿ýö›”tz¨`é@¤”Hrþu«P(ŒßO:Gã)‰MNNüñ#ÝÙ£jì-Šçew
-
-
-µŒ!çæ涶¶?888’ø¡h.P«ÕÊår4¡Hý-Š|LÖî*•JÓÓÓw–Ñômkkë›óˆÝÝÝîIIDÅ266Íúúú„#Âï¥-*sÕ§pb¼ýšŒ†-G¸>N´2•¹êS8nAbߊ-G¸V•t¨óTJzE·¿-G?)~‰("-á´>ˆ½GUPÙ­G…ãÞ¤þU¢ˆ-…‘‘‘F£ñŒC=/%188˜zJÂúÕ§…âB3„¯m¥”õzT>î}A_(Š-ǽ/íËE-ë©2•+”-«ª,Ý–-«2œ™-Rárüøq)‰©'#–.]šøobÀ766vtt¤êK$—’H@JRÂ-®2¥Ë¨-+**šššr¨½½½I¤$Ɲ†Â-«D-¿žžžäž%1™”„É
-`œØ%D$Hnx(Në¯2«ˆ-]±ÑÝݝ\J"qÞII-ä#˜â8Qœ¬÷‚Ê€%-
-
-Ö¬Y³~ýúÎÎÎ.¦–’¨ªª’’-É¥$êêê¤$-+++›ššÒýÕ“KI¬]»VJ ø’;ˆHîá§8ìe’^N(-EúFšâ„¥¿”Èü:D‰-%#ÚÚÚêëë'EYYYuuõØSã|¤$-')	€ìŠá·Ôm!iï(NdzSe€°¯Ôà’LQj˜â9¨V¸5Ö¹aüÔB¯-J˜!S;Išl!…ç óÈ­1º-
-ìüf†-q±)‰¡¡!)	€©ó}¨¤‹¦A¢êÉÎU òë+%â9†ýÖ8ÃÛ€“;¼LöBj¿Jdº@J"%
-l_Çázg~oâ	™ùêÙJIdq:
-òéQZy¦ä‘’-_0„WÈä)ª¯¨Ç|„¥×2¸ÈÖYÁ\§ïkew~#cÃIe-¤õ“‡¦$‚9¥¤ã,³ÖÂ]ÿù¾ºÓ*&ƒJe-øB4 )‰ó}ÅtÿD÷ ô‚”„”D,Èûí³ø™”DpŽÍJX£†å€3ö
-é+W:®ÈÑNí-,xû±§¶¸ÝuŸ³x\ËM´¥§þ¼–“D[šÑ–(]^Îh^`iþ²Ü‚ü¼ÂåϬ(XVT˜¿²hùɼÀªÅ«‹JŠW––¬*+[]þlñؼ@uÕšššŠºÚÊúºªµõÕ
-kk×5Ô5®«ßи¶i}Có†u-M[Ö·nÜÐÞÚÜÑÖÒÙ¾±«£µ»³­§»}SOg_oWÿ¦îÍ}=[ú{·nÞ4°µoÛÀæ¡Á-ÃÛ¶nܱ}Û®C»wïÙµ}ïîÏíÙ¹oï®ûvÜ¿çЁ½‡>wäоçïáÈÁc/:~ôð‹ÇŽ¼tüù—_|á•—Ž¾úÊñ×^}ñõ×^zãõ—öÆ+oþìÕ·~þÚ/Þz}Ríç“j‰·)%‘™{
-)‰äª‘™”DÖ{!ƒ”]!}[¸ƒŸ’Â) %!%á%"“ÉÏi¥$2YpÓ -V­,,^µ¢duQiÉʲÒUÏžzÄ@Eyiåš“yêªòšê5µ5õµUkëÞ•8ý|1yŽ¶æÎö–wò=›z;û6uõ÷woÞܳuËÉçôoÜ<4´exxëÈðÀŽíƒ£yÝ»¶ï9عÿ¹]öí9x`yç;zøøؼÀËÇ^{e|^à?ýßñ³ÿøå›cÚÏ.¶ý{íYiG$ŸŒH*!%‘•û&[ô/¶RqþÐ }a„ì>@J"˜çf†‡JäSÁ<Ë|¦„5jô>ª
-øcŒ¤$-Gd#Ôp„dDÀÂáHFŒ†#δئ$2¼ÙiŠ9•WþR9ó‰~ÝhtÁËÌ/=õ³8‹ÛÝSr`™¿eÎüô˜ò±šÜÍÀU#}©÷ZvÏ2+çÏ?¥$‚p¿ %-Ì›úh$¤‚p`Y¹éÎVM{áˆLJ",ƒÙÇJDu½Ok#¹ú’’-Ú‘‹mÇFÛÑt·äß’˜.%‘ùˆDfŽ6Kå,¦$tA(î¬S¾÷;€‘IáPÌÖ-sÊI¶fìÔ~¹€ÄBÚkúüÇÇJDc%±Ok¥$2YpÓ ŸË¨:-¿V@±Æ^ÚG@>Y"Ëàˆ}`›¦‡¶³[pÓ ¸¦Ä‡®€p—’X·n”„”D at 444<óÌ3=ôÐÕW_=-㮿þú%K–ôõõKI
-
-II-¼;/°$o´å¦¢å¤¶-NyKkxá]‘üÓ‘¢3‘UE%Å+KKV•¨©*¯­®¨«©¬¯­Z{*2ÐØP»~]݆Æú¦õ
-gG:;6vu¶vwµõt·÷ötlÚÔÕß×½¹¿gËæÞ­[NEû‡¶m>Ü1²m玓‘=c#ûvØ¿çЁ½‡î;rhÿ󇜌¼pèøÑ3‘£¯¼tìÕWŽŸ32ðï¿øÙyÚçk¿L¢½ˆö‹Œ„#¤$-C å³ëÿïÿýÿgï=`ÛÊò»íE	¼H	’E°@¤A€ @²X,Ù`±ûm’Ýý¶NŸÝO/mËu<Åã¦BQr/’%Q¤¨fõnUK²Õ‹muË’,¹Ììξàä%)Š¼—ívòyðÃÀãB^ž{Îá½ÿ{Á’èîjhIÌÏÍ”×·aC˜Õ†0Èö6ďMnCü,^•§Äòâ,	--æ±>rį‘#T1#¾0­ñkc˜[,‰Òb,	-ÝÜ×CröÚ‡îA¯-ÿÌtõžÛ’¨kí†À†À†PІÊ³i9+÷D,‰ÏBâ³$r--{IÔ·ucC`C`CD)D<_Òr\	´$>“#°$-
-
-Ξ=ëúÍÌÌÌ#GŽ>|xß¾}©©©;wîܳgÏ¡C‡\¿™}îܹªªªÞÞÞ8́ÉÉIÝw‘²$¸®-ÎÜâ‚HægãÌÂfÃeNÅ,º³gæ•ÊÝ%³G'GÜ•T?¢¶$Þc>-–ÄÔDKba~vnöNäÌ	™	ʼƙΖÌj]å×Ì»ÎÝÜ̬+³wffîÜ™¹}ûέ[·oMßšžšžžœšš˜šŸœ›˜ped||xl|htÌ•#£ƒÃ#Cî\¿9Üwc¸op¨w`¨§ÿfWÿ®ë7:û¯õvô´÷´u÷·v]oéºÞÜÙ×t­¯±£·¡£·¾½§®­»¶­»¦µëjKWuKgusgUÓµÊÆŽŠ†Žò†vg}{Y]›£®Í^ÛZZÓb»ÚRrµ¥¸º¹¨ªÉ•ÂÊÆ‚ŠÆËå
-®\tÖ_(«»à¨;o¯=g¯=[ZsÆVsºäê©â«ùÅÕyEÕÖ+U¹…•–ÂÊœÂÊì‚Š¬ËY—ÊO^,?qÑyüBÙñóeGÏ9Žžu|zÖþéû‘3¥Ÿ¶}|ÊöQ~ɇy%ä`->”[tÐrå@nÑ~Ë•}9…{³3²
-öd¤g^N;y)õÄ¥ÔãSŽ_Ü}쮣v~zþý#çv9÷Þ'g·|öݏμóÑ™·?<ýÖáÓo~xúÃ§_ÿàÔk‡ò_;˜ÿÊÁ¼mò¶í·¾¼ÏúÒ¾Ü_îµü2Ãò‹=9/¦ç<Ÿžý|Zös©YϦd>“’ùôî“OíÎü¹§Þ˜–YÉ’ðî?b/-Â’-n(`ꎪÁ»p
- |'¡e-+œ@N	¦ßüÅ!á;!--–ÄØÈÍP3b‹%±8777c)(7”
-ñß&·!¾
-¡j
-SºŒiüæn,	-Û1
-ØØ	fCHÕ0ßÇ’-èit-ÚRµ$>‹`I¼÷–-ö1š-añöàà V–˜Å’¼ÑÆ•-Ždö"Z-B͈À<ðX®°Ë¼Ámˆtµ!ä/É"LjC¸òjPŸwedrzmu9²%QQ–¨–DL—…\Cè2ÊhC-n‘6„T†'¦¢·$bIp' Ç(£
--ÚÞ|t1(7F'°$°$-X€%M鏺Pe-X€%±úGu(‡ÒùP4(Û©h-Kb®g`‚¦65L	Kâ~P°$-e\M-Oxh-hV¾Sö-§KB‘‹É/©ƒ%;!¾#TêvRƒ;VãŸK»X-u±$-ǯ¥	¿%1<:n8Â'D˜Õ†ð	&µ!~irb›k˜KKKb}5ÔŒxbI¼ýö›|‰-¾ƒÑ2-	ð#¼¿Èrgw–MŽ
-!’cE®tÄbIìÛËå“nvB_S©š†RåÅkƒið'ê+
-©”=a-Ú"ñx
-)Ùö4‹Ã•@9ÂgLøãÝTb·ß’ˆË†Ø’ãÅþtô¯¯ÝÛÀ’H‚kQÞs©]i1š‰oÌÛ^Š]-<–Ä[X-–ÄÍÕh,‰Ã§Øfµ!¢"ÞÒu{ˆ¸mˆw¢¶!D³ýxqjŽ#ݲ%i9þø‰œÀ}%)9öÝÙv96D`v¤­oh‹%±!,	U‹f¿çŠûõµi¥ÞÅÈ–Äu\F.-Ñb ^7£¡-Fîo´-KBÇë,	½.´°$°$’aÂ?zôH®%ëÌé¼(,‰WÞ?V€
-¡€
-µ
-¡M35ÇmFø“f)K÷&pG‰`?•”Çîl»?ÔehK- *J8Îööö ååׯ_ONQ"Ù,‰ÖÖÖššùÛFáêT¡ö
-–Ä]£¦Å~¦h(-š=ä»”:Ýoõªûis
-°$-¹tñ–-M4~„R6„T*Z±$LPîàèœ-llÓÕ0SsÊD	ïŽÞˆ‘	O%05×)³†)ZÆ욊`,‰ç²2O¼úê6Šc->‹TܬÑìäÊyq¥†˜â‡§Yg~‚%¡ÚT¼ß>Á’ظ/œ%ñÈkI|z¾ 5L±-nSr{ó*öåWîüˆPE"ȏØ]BlS‰­~D®3ͳ¯„25Ì­eÌž›[-‰uñ\<K-ÊþÓW¯Hlñ#¨fDD?bŸ‚ÛCDgCfS÷8[›%‘Ž%-q?½µD¥ JlÙT—p~„°©„'éž?’SÆ”*Tvû-‰õÕ0Á’-æ³!|B„ñmѸ·8[ãÙE¢6(>?¢6¢áÝfÂó§A¶‚Ú6Äþ(lù–DæÉéé©\V-kt±!ôÝB¾
-ñžÉmˆ¦ªa¦YË÷®Úwʝý§¼¿p'tS		E" èÿ€lQ$*TªavŽm¬¯n„U$\zK--(¼W"÷Æ˜0+܏è™ù²½–XÍ_ê’Ý{•Yó–-6„)“Ä’øÚSÕŒ€%-+¹XŸòŒ¥.Œ.Ÿ½¼xrxþØ@òå¾Ù¢„ˆ²Ú&3‚‡ø§s휥	;')܏81h‡n”ã/âä¥%m¬.	X-	a£IšÈïG°š‰4‹*MhüQ‘`[VcÂåGE‚fÄ»~‚äœ;’¡*g‰m!l9­DS*aÇúx˜F2&Nêü¿ÛbN™-‰§ÆÀ’-ú\‘h&Š„˘ Ñ•JÈŠÄW¯Dê<Á	Ò.!l±¢+•Ð(b»Ä©Üf¨¥E¢.l9WR$ã‹{Ô’x
-K-í³ë¡P(•JIϺ¯¯¯ß¾}»æ–DX>"w å'( æÓo…æd(-ó¨í¢qé+ÉUëª-&cÂàG0E¢iÌq%¬ŒkŒ	“A‰óB,3"·qT4&äœQz%Î\våôW¯„^‘¨WÂX-I ˜Ð-4ÜF!­<©–ñTÓØòù‘ÅÜ7?}iþäÐÜñäсäË}‰¯ØE=ÙjŽö'OΟ^ ~W$N’XÛdcÂíG¨ŠÄqËàqBÌ	!‹›»$ösèmmiúô?ÿ#Ç-¥<ö_üV*áV$ι,Z0‚f"+å²Ó%¡÷#¨%1>ÚÒ|ñ‹ÿ
-K-:iB¯HøˆPsÊÎÁ,‰‚%-[Ïžî÷÷õ´´4ýã?þ.,-+̏°boé™æÉS*A«%h¢4]–4a'J£–JˆrD§õçM˜¶K´ó	"G´…ÖÜ¥̏°¿ÚêDn—àfýTì• ŠDVŠX*Aüˆ&w.j{%얁ˏ`ÕV—!M¾ZQ¢!Â#6„)ÃIÇ’xªÈ’%ñ…/|×Z-~hÌÅ™½‰€7 -\ÒH~„]*!‡úAÞ(!Gt"”v	«`â`(.µ'ªoC\ð§
-!¦EˆÝ%K-YûO?ÌìÞªšñRoBÍñÁ¹®H6¿"ÑÍD	¾]W*QH‘ÛÑzE‚8…J%
-(DŽ°>žHËÆKE¢Ùé˜hÚ%.:Ñ+܏à½T‘p©4’"Áµǘ`fo—Pýɏ8­3Á†à9çÎLöX-ZÏ,KâÑ£‡¶!L	3\Ž´30³ECüKš°£–J(Š„S*A2MÛ%ò•J¸Û%4ÑÜŸ›¹tNmÐDå?ÂúXl”ýµT‚Çö#Ú…Ž	ÇŒ`ꄦTBP$„‚‰µ"Gp?Â2&ä4éz%ìj	Á˜Ì^tµKd%?6ÄálˆVC†’Ô’xþ–-ø¼]Â-Mðäõ#˜"ÑAD	º…Æ\*áR$¬R‰IšVk£I+-šR	"A?fíM$r£„^‘ ¥<v»Äy'rµ„ªHœ{%Fl'‚j̘à¹"+gX»ÄálˆÓ5µ!ΖfC˜ƒ%-¡²²²’L&#‘ÈdÑàXº¬è
-$D	-…R©”ôœÿ7`I¢9bvv6O™-… G-&4Æó#E"¤†LdjŠDˤÜ.Áº$u¢™ÇàG4óÐv	KŽ˜X½(´K¸äÁp2J{%9‚ÙÌ/XÑúÄžDÁhlÂÊDV`I<Ê“¾Þî–æ‹ÿðŸY--«yT…t½°¾é±ß@R…Çø½všWè-ûÉU¡`}/wTS¶ª³E'X-‘ýˆÜß%„ҁS3A#úÔY öl1•ä³$ž8%-÷°Åcz†zz:“Ɉ:ÀÖÖÖÝ»waIÚˆT*•L&§¦¦&9€YÚƒ\	-KÂË«g+-õûýŸÀ¡Û:^Ï„%Ñ€û«\»–ÄÇ>ö1bI¬eÒªá²$ì;ô½[wõ6Ä¡„ˆ£$sRN]Zì‹áGðv‰é¼¥:?¢›”Jˆ™Zïâ¡ÆD?ÂÚæÉ*ÒÄZ?Bl—päûK­<Ál?‚´K8[l?Â%MØiÒ)R»ÄE—±zA
-s%¸álåa~ÄXúœKEˏ87
-¢P&צ37?|ÿهܒx¢µ$>	K-,	/¯žÁ’€%|•²Ž×3aI4ø¸Rv%,‰Ÿù™Ÿéhok´d3©<ŠÄûÔ’xtõÕ{‡·!tB„šãƒó=Së’"ÑoeÊKš°RЏèµÛ%œPi‚„•J¸ýI‘ ½Ü• Û;ò•J8Š„«T‚›Ö—¬”R‰<ŠD뤐`¶%˜¡QK%ÜíšF‰ñÜŸ™\t¥®XÇÒÇ”j	Ë•àf+•à±……ó.¶KÀ†lS¦2¯PKâÉ£<%-7°‡@û`0\ZZMõõõW_}U+JÔ¥‘N§çççc±X(š<8´-•#"¢1!Gò#xÍD Hc™²1A#)®R	bLp9‚—JðLdTE¢iÜ%œØ~„¶]BT$ÄŽ	¡ZBt¨=BM“!S«°$-‡uÚFWoæ·$žÚé…%-w¯‡ÅôØ<Ïf³¢MpíÚµº±$Òéôââb"‘ˆF£Á`pò°àø ÈÅ.¿LÔx¿€êœP\-×åðbX-Þ>-W‡Â¤-…&KÇ-&`CJˆè(%±½\:Ý韽öõ_äòüÙþXå{b¿&wmUxÔ߃p{G0ñÅ.ðþjdu¤•2¾$O­ÜÂ’ðÔZƒXU!J----qaa}}½r6Äêêj*•Z\\ä6D$	ƒ“•;€²¯nÕßÌŒ·<--‚
-¡Íù±Õ¦‰Ìproh–GR$¨:1àÄåGhãò#¬F	9½¼WBS*áR$¨!8¶AâÔLÐ8¥Š¡´KÐ-S<¬TÂäGLmÓˆuîð#¢Ž›Ðæx
-ô«°!jnC˜ÒK¢Fדžý}òcI4ì.¨æb]MÏ–¡À’h¨5´º·$*·2ÿ-•wg :gD/iâüÂþ:ôQ
-Kâû¾ïû¨%±T”%qûþ¥Ø4Ëb΍®H~„¤H°R	;¶aù¢4a'"Aª%¸(Aä—1ÁbT$Xµ„ۏ½‰·"á|æY£ŠDd†©'´ZBŠãG(ê„֏h	Š¥îךt½܏hšp
-.Jí¢Ë`Ù°!aC¨ý¶¤â6’¾	K-‘#Vt¥?¢_H_ŒES*¡ñ#\¥ܘ f„«TÂя`¥J"ër©„ÑŒ;&Ú…v	KŽ0–J¸üˆbÚ%ZHœR	g‹Ú+á´K°R	·Aì	A^PüØ´!Lý¶!X-K-êUóß[…ÝŠ›å2þðï<_Ñ=w¼M-³ú/£\»–·$’³ñ–ÄÓG¯¿ýöAmSÚÃkCÌ’°"ú¢7‘ØéWz%¸Aì	ɏ°‰ø¶¡T¢G옘æÙdŠÄ–”.Áz%?BP'¸!úbµD»K‹J%x˜áR'„v	GŽ`ê„T*ÑÌ?òÚ%\:m—8˜
-¡"`C™ Þ’x(¥§Û²$þîoaI-äR0Ñ?ãŠäGôÇQÂ1&Ô^‰Ø¶Éèq'_©„âGˆ5S²a)SvœR	%j©„¤Hª%Ú¼cbƒ«z?",jN»D³[hÎãGÀ†(·
-aŠlI<Ö–-êõ ÇààÃ-ð’µÄï\ÓªÒ—s5ùÑPÞ½S…&ç/±$3ÓZ9B°$?{ºÿÖ»ïæ³!B„š3WR3ÛC‰’AɏДJ8°#—JÄ·û,obGÛ(!úvä^	GŽ°Šíî؍âG8[¤^	G‘Øba¥S.E¢3긎4!úÑÍ6ž±]BãG¸ª%6ZxB­4n{"¨(–¿@ŠrÙÍ°!’InI<ydR$`I--dó×k¨œPÃWÙgNXuyþ¶·æx,ZŒ%ñÎ{ïÔ†83²¢
-÷#†EB)•Øea¥<‚"A?&Rfvzã<r»Dk—`ŠÄVêGXÞ„QŽpeŠFö#„v‰'®v	§QÂäGèÚ%ˆÁÕ‰@XN«¨HP­ÀÕ.!Ú‚¶`P$ÊjC´ÔÔ†xɆ0ÅdI<q‡XŸø,	-úúv	+½ý¢HÌX&E·ûcú¥î¸>]j…D|¯“ø19E*°!êÁ’xK¢ë	>½•ƒ%»O$,	Ü2Ws÷ÑÙQ¹o^—ëäXA0‰ùîeTHF¨íSß5\àœªÉ)| Kâ½dCÈM“œ_Jîiå+	ُÚ%¤R	®E8qžm—"!¨=4²¡ÆåGÐR	Wˆá.•0+®^	—Ña§]ì•Ð*Ñ-±Q‚õJ¸·„yŒí‚Î@Û%`CTÕ†0/cN®Üúú‡/ryúäÑX-(¬ZB(˜¸Ö—àa¥EÂr4bÇ„6’"áø\I"¨
-Eù5" 6”1_{ÿùÿK¢ºwg°$7å}mžÝucITô×Ú×jÏzö‘N?<uv¸Vóh¬òï*÷ûQ„ETÐÈל^~%e·Ë8^3"aIÔÙYÜn[Ñâ,‰ýGdC8[Ó\sû{ÆR	îG(Õ’amQK%D?bfW[*Ñãò&vzcÛ$?"¶c‡•Jð8Ò„;ªÁ쉎)¹f¢#¯a)B¯„œÕL‘ "ƒÓ.Q=Â-DÀ†0e"K-µ$ž=…%-ëô/`
-Ók˜ã©W¿K-ó„''3üËçig^“„›úyþ€J‚­µˆèlT³¡Ë÷y	7h x¯]QI ’@%Qìò“¦p%11vA%¢*	â¥jˆº	CJÛÅËʵxûé>B™ÔGPõeBqN9cª>BnêŽynu‰ÑDÊ>B¶Ú·ºD8Žˆ,3AÛ!Im¬`•Û÷[m1ÓôÑŒ"î‘`4šHP˜&‘¹z†Ù|£Ï0[ËææØô*	-…2™L¥Rét:½^?_<ÌÎÎ*•J@€\-Gœ3âLA/*Á+&’L“HtË×¢š–™HµºD|YQ"µéV—Hè#¤¦öó«K¤4c{œHYÜ¿É®@
-QOƆ§¶£•„'9ŽðEE%-Xû“ ’(Ø·ÅI’mG1]Idè#â+‰áRö5DLÞb¼ýªõA5e⊉}D\"¡Zý­è2‘t"]^Tb=êÚ9£éDº>"–HP«KD•Ñ¦O'¤©‰ðêt
-Ñ‘dB‘:‘ Ÿ"ž{¨]o5DÉ9HUO‰¨$-­V;;;‹´!çèõzµZM62Z	-–‰-"ã fs@1¶¨c†>"nQ‰¾øe&”Œ™ú*‘PnD,0Ñ£HmBK$¢«KÄ}ÁzWv}D$‘ˆ<ŒþZi
-3$¨!PI0•Ä¿¢’-ùCäp,aPaT”É--zc“ÛCÁ\™êcñ--ä-o¼ñ:]IîÛÕ„?Ù[Lj%ð¹g¦µN}uUåË/¿ü»—_žœœàRNò¸”|—’ÏPò…¢à£>|ýµW?øàýööÖ‰ñÑ`À—ýŒÞ”ŠVLۍF^·Ëë>mmm®¯¯­®zTñð!9Ä,潪Q«èptt·œ-D‘HV$SJ$â°©”R&“{zº©µ'nߦ+	»Í
-D>D&ž±Hß9ƒÙJ—~Ÿ[¡r¨µ$W<|ø¨²2ËÙìÝ]äëkª«:;Ûy܉\.„qQÙd¿þ´"²¾ãð%ê÷y½—'Ï•„V£ŽV£¸Ù-…<Óé\__Ç$È8Ôh4"‘KK-)ù”‚ó
-ù"JAD‘@L)Œ)J(E”J)¥8¢T,“JbÊ(å2iD9¥B.‹© <ß’Dsª(¡¥¢’ˆê+«Ò¨Õt“¢Õ5SZ-9|¦’²”™™iâì•¥ÕÐPwõJâ"
-†9zoqÿ-KK-\e吜W4GGGÁ`n%ü~¿ËåB+ò‡N§“J¥\.¹-jh¨çóyô™Ë\]5ÚlÖË‹ò²EFÅ„ÃÃßøÆ7p›-ˆʈ´ú³’qÛʈ¤P"±’¨ªzÄ‰xGGÃÅQ_OOwggG[[+Hœºº:2®ÈŸª¨xø駟~-˜Þ}÷î;TgñÚk¯~üñÇä;twwáQ-câšiS¿7àskÔ
-ò++ÒÛmltdb|ìBߎVíí­R‰(﹇ŸÑ“Ò-UòxD¥Œ–OTHcÊ¥<¹$¦L•‰#JÅ“E”Ñ¥vœ(&
-hLj"Z>q”VHäGh\â0-Ÿ8I;DäÑNi¹ÄñÆÉ1b?ãÄ(míø±—ql˜ØÃ8:DÛM¡ìb&t2õ;ûÚèm‹·¿§5Á¾îX--«ÖhÔmmm·oß¾ÿ½FN=Ñç9
-}OC~Ú3ÖÌÖPÐøü>÷äćSÿøquÅÇMœ,g³76rÈ××>®éîîR)¹Ì=´i㎠Ëõ§5ÓËj}‰úÃz=®£<W2©„®$úûð-úý>wGG‡S_]]E^ïÀ@ÿe+‰¾¾Ý”ö*¹G1íjEj0¦í^&£ðyÝù®$
-9} 
-
-â	-Ñ¡ù…×ëeZ‰£££­­-Ìä@§ÓI¥R.—‹\-ø99ÜÕ*%} ŽŒàÙ-ú>vÆsUg<=no­Ó•„ÌLë®PIôs§'ǧ§Ç.Ê7ÑE<õ¸O½D‹èóºý^7õÿ>ßï%üÞ`ÀøƒA(èLŏ–…éD2Æç|³Œ³ŽP ß•„F­¢+‰±ÑQ<ø-ù9‰’µZ5;£’-Ü-(y<!%?¦/¢D	ĔˆbJ	¥(¢„R*G”Rʤ’˜2J¹LSN”1*´rF¥’¨`(ÊxÕjªF¡
-7)êp“¢Ž6)šÎŽŽ¸J¢B(ääpcœšÒÒ||¼-„¾€ÈçñyD.;ɝ$NLNŒOŒÇÆÇFLj£#£#Ã#Äá¡á!ÂàÐàÀà@ÿ@?¡¯¿¯·¯—ØÓÛÓÝCìîêîêì"vvtvÚ;ÚÛÚÛ­m­-­-„æ–æ'ÍOMOšɦhjä4r8
-„ú†úºú:Bm]íãÚÇ„šÇ5Ô*ÔºUUUÔ
-•ál ìê¡P«Ã–Œ"ú@&{üõ×_Ãó.-ݧLLNÐ}ÊØ8ݧŒŽŒÒ}
-§æpéZòòé™%~ô£áy-Ïôô´T*år¹h%-¥~™vqŽq‰¸0˸HœŸa\ 5L3Îëu1çt†¹©˜³”úYmÌ¢fŽqZ3;­f\5.:ÖDí‰GëÖæ@q''nß~Ï»--F)‘G”%Œ\­˜8I+%ŠˆD	QH§´cDŸq”VÈ#ŽÐ
-¸´ÃD>q’qˆG;A¤ålj´“cŒýĉQÚ>â8íH/ãq¸‡qtˆØÍ82Ø•àð@'㱿ƒq°¶q ·-ÞþžÖxñ ¨|${gk5¹Du:XãÊ2s€ó¸“ó7ƒç]--øÛ[›ûÎÌš÷v†ú;ð	„å¦~V½·cJÐa·$‡ä,!	"¡ŸwûöÛ¸·-s5ŽJ€«/Ø2;/a›-…ìv;Õ@7dçp!‘Ïçãñ¸Ïç»ø7ÃÔÔ•-*	‰t:½¶¶öè1[[[«««­D.—óûýt†ÝnßíÁ`0Î"¤·ßápXü²þ¹V«•J-+G!þ÷d2G=>q¯QI-…íím©•ÿ²¶¶V1N_,c±XÞh-I½^—N§r¹Ìɦ’ñÁ»üt;iT…Î’þ—Sñ#{+ëô´œh
-}ä#áõ-S‰ðáßï÷MLŒ?^+Æÿà~Ÿó.-xûz®ó1D<Ù±‘ûïbÐç(7½°ªÇoj#üO¿ýÛ¼-ô÷Þä|-Ó©ø‘Ë‹ÛåW$…bâçþ3¼-EÅ
-ÈŠÀIf||\HÖi5Ë©D5o$aŸŸQŒ
-*Æ'”;>Ú_îØÈý
-÷ÉŽJõÊŽï•;ü §Ü!áÀ]ÙÁ;ƒýOøàþí
-únUØß{Söþ½öõ\¯ù!^ÐY«1à],7èwf3ËG®0¶«¼.ŽŒ|ô£åE-…ÂÎÎΣGvww766Oì‹ÅD"!®$ÕéØív·Û
-…’Éä™Þ0BºÎâá¿·í²¥RI%-=®¹
-—œ³º¶
-]‹3å:íÖ
-ÓŽ…©rç§ìó–'œ³,ÌM8[r~Ö| Í<g3ÍÍ<á¬ÕX¡mÚPáÌ”¾\«EWáô¤¶Â)³¦B‹I½§JvÒ(©”4d’&ýFýDIݾÝø¾Ú}õš±
-uê‡jU£åj”#ªÃª&†*TŽV(ÅG>"õŸl‘îåH}OæH½%ŸÈ‘#
-?™#tI獒Ä/^rÚ^{¹b¡8²’Èf–Í&ƒJôܽÃë2-ÓËGTT.—C.­&&Æ¿ô¥ÿó.-…H$²¸¸ØUe„Û탉D"—Ë­œqÑR©T(r¹\veÔj5•-…d2ÅG[è2¨$-%“É|>¿r1ŠÅ¢øJÅGkð—Ð\Âáp,ÿÇårú–F£‘J Ë79/¾ø¢N«–§‹ƒ_•‰„0õ2Ô)dxÒ…ÚúÁ{o¾uõò¹}ó°oœÏWëçÃáû„M	êmz9~\´5e™”—²þû÷yE-…ÂöööîîîÆÆÆ	­A2™t¹\ušê±Çã‰D"Òç³ra2™L4õz½v»½²ˆÙÙY£Ñ8>>Þßßo6›Å×~øöûýT-IÇ¢=—Íœê쌅™pD¬P£©¨$„©DøÈPba~N%&Æ~âŸà¼-Ùb1Wù\ºô>´ukÎèÞad¨÷×.5Ø×{å°/×V‹IMÈД¡ÞýÎcßà&ÑjTC	Õ7¾ñ
-^ˆ-‘HD<4'OõÛívÇ‡S©”ø-5)#ŠÅb&“ºøÈâãwC199©R©+#*ƒ‡Ù@ pŸ"þ*	€îÜäܾ}K«Qk4*¡V«NÄ£+Å|•&ã!B†¦è=¬û°'½ÓuJwù•ZßW/=ñòú•—ÝŽZ†&¶•:*u_ÀÌrü¸ŒË±8/'`
-ÅøOÿÔOñ-¸ãðŲÔ-Ç%±åN”;.í—½_räÀ‡Ã}ŽõV82x¯Âá=²Cw+ì¿Sáƒû·Ëè»UaïÍrïß»Qa_Ïõr›Ç®R|Ï/ÌN¼‹å†ü®ãë´E^—†‡6-I½^»¼œÊç³Õú#¡¥£tWl?ÃA×y\ԐßYaÐ稰bÎ\è÷ØË­x?ÜØ×Áà’¤sÖí´è°¹3O¸8ã\´h/éX˜®pq~ªBûœ¥Ü…ÙÉ
-çmæ
-çfLÎZåÚ¦
-ÕKÎLÉê$­I­ìôdÉ©Íæ’³z_Ó¾“FU¹fƒ²B“^qX£n¢Bƒv¼B½f¬\úá“ŽJåÑcG„eýÑ°dY4$ùd…4('HC¤‡B¤'+¤Ç	ÒA‹4rÿ°gÏ‘zÊ[$áøè}ßÒ|Àk/7öYIdÒ)£A'‡ׯÀ¤-úÕ*¥¼Lýûÿœw-!C+„Õi9¯SÙLê¸El9•Ðë´ò2ø¿þ×ÿä¤--'ÆÔÄñj|x>ªtfZOÈÐèÁ=WWÅ·q>Ÿ>2Ô
-‡jµòqá¥øêWÿç]-ùl$è&d¨SÈ ¿BÍu.Zߺzù¬¾yØ7Î竍Q­!dhJÈPWŧM'\‘ò¹Ì¤Ù$¯f=wï0-úÏ—HãÑ-ÎæsÕø=Ù—žÿkÛ”–¡…´kâü“Æ"U½N±›²˜åPâîÝÛ‘--CC†}•ºk¡ø|²™äq%×¼M%ÆÇFŸþèG9ò-	’nÉpPrI6zʍ†½eúb‘rýB±˜<6P2Hì”LÆeCÉDÉÔ¾aÙådäÀT4]2VÈ-¯¯ùÝsâñˆ\I¿ö;ÿ‰³2-øJ>‰Í+Œ̷'ŸYO%…‘TùàúÁìúþ{zyßLÉxÉô¾Ùtbߌd2'›¦„yÙœpYXÍ§e‹ùLÉ‚lv¥ô³BÙÒߥ¶*\‘ÌK®­
-åÖüöÁVÖç]’O­FõÙÏþ<‡f-Ïõ†.Î[^½ô\k†•¾XéËðÎÍ÷2jŽÔY#ÅýRz×æcB	û¼Jˆ5ðcûG^-…ã*‰T*uÁ	ÿÙÙÙÞÞÞêˈžžžááaF355µ-ùLýß‚á@w\œ·¼zéù—»µ’øà½7	Z¤e8^Ë×'ŸK·Ž%1V#­:­úÏÿìO9ï-'â_±;S%	yhÓ2\Lë	ªÃmR4ü ^zé‡sVoÊÐôáBΟ®oÉ~ÂRøä•P«Qý‹ñrä-…¨$ªÄjµJeÄÝ»woܸÑ××711a±X.þ‘©$-A•
-•DT@ «*‰éééÃe„ ··w||Ül6—SI-xw¶Ö%_Gl€¿Gª$-/<-§-æÕ•Âæú*¶‘]'³÷ØNÆã¹’ÐjÕŸýìÏs---üÓ?ýÓœŒ-§ÓI%ÐÙ» o}ë[r%
-x}GDl€Û›kûœ´ö
-ß{çm^-Äv6Ÿ]–;µÿö_ÿ‚Ã1--ƒÑˆ0†…þpHè…Þ 0 ôüÂ%¿OÒíó
-]^OIÏ’sOÇ’[¸èvIÚ]Ná‚ÓQÒ±8¿çÜ¢½¤}aV(v1ó™ù¹’ssÖ¹Yëììô¬M8%VHáÌŒeÆj±Z'­Ó%§§Ì©)Ó”¥¤eÒ(”Õ“5›
-¿õ[¿ÉKQ-÷þúýÄÞ--d¨$Úˆ#+	‡ÃQÛJbtt”êJ-•R¡TN(Š‰ñ‰ñ±ññ‡ãcÇŽ
-^½úú?ù'ÿ„—¢-8.^xmkþ¿ÿ÷ÿõ}3-&„<%ñúë¯ç"%Q^^³dD ¤¤¤¦¦¦³³3G£”-FoogoÏúèéîFwW{0ººÚº:×ÇÖ>™ÅÑÜÔð'ò'9-Ƶ+Á¸Œ«—/ãÊ¥óÁ¸|1ç‚qéÂk—6º÷/ntï_8·Œó¯c½{ÿÜÚòkÁX]
-ÆÚJ0Ö»÷W—‚±²4ŒåÅ`lüìý…Ù`,Îcfa.?{6Ós3ÁØøñû­û3ÓÁ˜8;ŒŸ½¿Ù½?ŒÑÉñ`lüìý±`chld}¬ÿìýá`Œcãgï®wï
-c£¿¿o½ÿLj½{¿/
-ü©žõþލŸ½ß³>Öø»7ø»ÖGwg{0Öø;ŒŽN#££½­¨èðûÞ÷>]-Fuõ«UU¯¾Ýº_¹Þº¿ñƒ÷Ož:õ®ÖýëÝûÇŽmtï9²­uÿ·/ÿæå—~½Ñ»ÿ«_½øÂÿú‹_¼Ýºÿ³þçC‡~ú“Ÿ<ýÔS?|òÉ'ÞnÝäï¾ùÍoø›¿ùÚ×¾öÕ¯~õË_þrZëþ<ð‰O|âcûØG>ò­ûˆH-BJ"ê)‰µµµ0¤$º»»÷’Œ(..Þ¦©©©¯¯o0v2KIu“’-þïÀÀÀ}½)	-~â(äôFg¡e\@•\–ˆ()‰h¹uëV8S{LF‚7¨©©éì쌝àYHI-uÐ(äè
-g•Ù£-žÅlvvv÷?”ZJ-Åɬt*ãŠe2X’€/¨á~IIDËÕ«Ws”’¨««KHJ¢¯¯¯¹¹y3QTTTZZZ[[ÛÕÕµÿ÷œYJ" %-df—”D@*!l®\¹"%‘Y2"pìرªªªööö½RFð,¤$-¤$-dÄïáªàŽD8IIDË…
-ž’Ø{2"PZZZ[[ÛÕÕ5˜-Û…•–’hhhØÞ¼½²²"˜ %èéé	Þ ¼¼|/Ɉâââà-›››ûúú“$xR-Ì
-“l¶Âi{{vUUÕöæí¥¥%©„„¤$ZZZ’œ’žž^XXX[[Ëîó’’-‹ÝØË©¡8„VZJ¢¯¯OJ"B)‰‘‘‘¬4ê·µµmOItvv$/066vöìÙ¥¥¥Ü°°/!%-þ–í)‰`]HI-ä駟>yòäÔÔÔÚ½x-	-çÉ'Ÿ,))_ÛƒÕÕÕÙÙÙ±±1)	-Ié¤$-v‘Ö¡ÝÐÐ %fo¾ùæfJâÒ¥K"1ÐØØ(%-¸UÜ‚`ÿߣØ\iMÚ½½½RRHI-„|/Rö?…D$ÀfÖD÷[»¤$zzz¤$Bëõ×_—’’-»UÜ‚`ÿ·¸Ûw¤$ººº¤$¤$’-¸UîëØRÜÙv\iMÚ---RRäGSS“”„[4€˜Ä>å¨Ïß3-Òš´ëêê¤$BëæÍ›RR!ßmB•˜p1-»Õ(Ù=¹L-É’Tp„ßÿüOëÓ>sæÌèè¨H‚”Rl;¡ŠK¸¸ÔáR$%á›1¨”D\ï?¹øð¬G-B—)PØ­FqÈî±e^¢rl©ɼ§Ý×äOëÓîéé^^^–J’@Jâ~wžðÿŒew_øà^drðѨLõ‘’ˆñý'ëžõ-µÉ(Ù=°L*ÕÚTp`aªïsæ§õi·¶¶/..
-&„ʍ7¤$¤$B¾ÿ„ÿg,»¸×ávdrúF´ê#%ïûOv?<ë-d‡Q²uT™QÂå©2XV.iûœù¯Þ¡§§gppphhh~~^6AJ)‰÷Žû³ó΃#[»“Éé;­”DTî?ûÿƒûÿð¬G-Kß)ç½EqÈÖ!eF­,
-ç
-mŸsþΔDMMMÿf#÷ÌÌŒxBH\¿~]JBJ"¢§m_QW;\“¤$ÂóhT&ƒúÄ8%é&»ÛT¶><ë-µåáËç{Ï<ÉÖ %-Xð=¾çûýx¤$rñdDhÉçí!,W®¿±ž‰W¨s6Ï[hT®UR-dkßP2;hLp@¤3Å!~w³0ÌíƒuuuÛƒ###ËËË"ypåÊ)‰|¾lDgggCCCÅÿÏޝl'’­g¯å‰g{êÉç«ñù<ðÐ#ª¯J)¥¢ïû¾PC£¢KÐä·WÅ:,IÍŽˆÿopVªL¢Ùû…xŸØggŸþv~~®âB¤$Ž$u«™nD?ì}]OA‡M’-%!Ã?&ï`lJB’ÒåÈic?²á«¨h´Iýj!á©Û¯:žxú̳F
-¡f)«HI-oýSreR¤$-Uy5~B-J¤ÓéÕÞïëëëV«E¨”„—Ð-"AJB‡÷Õ³ƒ]£9B­—2d“Þ}YÃO6í Z·øÊsåJŲ²j‰ž\¶3P­—Ò³ÞÀÒÂ_Id;ÊVýªÅ/-`¿’’í(Õ%%a–¯‡|ƒ-8Wívê¾”…Baµ'¼T*5›M¤$_6bÕÙÙY"‘0ä’’Ðú­IIèÐ7n–“͐GÓ™’m¯ÊYáè™	²XJ¶)	Ž²Z›GD-û”ëÒeµŽ…Ì_¾ø†-`¦-—ËEJBÓï•r¦$¾3”žŸTª“Mëh프̏F)‰w_”„>2)	I.}^ßz)	¾'-rîRZ¿/)	žo–“”Ä1ûÁª)‰}?)	}
-)	ýRDJbß³—¯Õ-…6?Žx;ße;qò“’д< %aÆïì¤$Œ ™î¦Z[HJBÝM"%a‡é›”_-%“IuʲbË—ËF¬9==Íf³ºíIRZ…$%aÆzÌb)	i÷ü.ojŠZH‡”ÄòÕHIèsÅQ„›el·yJ‚ïŒ-`8iaÞŒ3SÅKøD£Ñµò‹‹‹F£A2B¶”ĪB¡N§Å±ƒ~¿ßëõºÝn§Ó)èùùùéééfŒBüKñŸÄŸRüyñÃá°x…D"!^J‹u”e#Ä;nÏt|þüYüI=÷)‰ƒ‡å#_çø-±^ýCJ¨—-%¡ÖÒ	†Ÿ0Zì“#wˆl9.
-ju^ܤ)	¾3-…ÖÚÈ‹Åâãã#ስ”ÄÃÃßæ‘Ïçs¹\&“Ñ"qð²†G$„µóŸùzÇaYϘ”„eRÒ¾²´)	³TDú¤$”Ô(%aà¨ÿö’°ÌoD’ÌÔ†œ-|m-_-RûÎúWÅ~j;[7Q8ÅìÏÌ'%¡ón±ü(ó¾¢t'%¡é°Ài-‰³âäääÓßNOOS©”$›'
-J-‡ƒ–E0–r[€¦åÍjk¨Ïç‡Ã‰D†¥QM€¢‹Ò‹	Tp:étzsš¸»»#%aŸe#¼^ïÙÙÙ§
-â?ɳ©‘H„Ê€Ìõ;-…ÄΡü--È,•J‰#åp8hY„…‡Mî)8¦ªYË~z½ÞP(”H$²Ù,…Äa-”ÑhÔívS{-GL”Ä"4jª¤ü-MÅbñþþž”„œôËF,œœø|>ùK¬Í"„±€•%-èìàX„(l¼^o8N&“›O´†2™ŒòœjÊ@þZ‹ÙŸÊêàÉZŒó©Tjs¨V«¤$̾lÄ*Ç#fvS|äµU5ˆ-‰DÂçóѯ©Cî#Ës8Ø9PݾáQÌD"ê+Éf³áp˜¨&`x­Å\oÞ/þÒÎæ@`³©¾T*5›MS¤$f³™5Ö’PÖ‘T–“8???99Ù%!þ¤¨»B¡IÃË_9¨"-8¸Äb‚¦X’¼-ƒbÐ^ÆoooÛí6)	ìNÌûe$¹ú-§Ó™N§×ÆmQ!ÔëuRxW&“Ùò“-…x<îõzy¶³U+ZŘ˜€wK”`0ø͔IJQ²F£T*1u‚òWL¾EV*	–"‘Èæˆ]«ÕHI@‘Ëå|>35-…ÂÚX].—Ûí¶n)	Ql’P"‘Ø2_sM-Åb¡”"ãñ˜¬4*?¢ÑèöM*èPY1çšâ²+T,ÖVžZ%*‡ÇÇGMS£Ñˆ”„áóo0dÂ-ö¬–B¡Ðæ°|wwGJÂ’òù|8Þ>ár±-K~¿_ùecU¥Ri·ÛªÿÊñüüLJÂâ‹ïøN§“Y”-øúAPÂáp()ËU———OOO¤$̸~Ä.:`‚0×{}§*¶A·y™’-Q{,K‘Ùl¶,E†Ãa½^g}+hJ”~¿Ÿ¥%(¨(«-$‘H°´„õª)
-*@‡ÒBát:ÓéôÚèZ.—wOe’’ØBÔoâ›òîóSÕñ³‰„ï%ù|§õ¶1ï-„fT	K)æ8ªR`,…B¡e±¡(•JÍf“”Ä^_„£Ñè^+G0©>­Hø^¤$v,8±-±XÌív›½'„Ž>Hx²OlX¥,GWyR»”"Ýn·R©0'Bç
-$‘HìÞ¤Êh#C)ÅìF5kŒÕå5óùüêˆzqqÑh4HIl—N§Ãáð7¿ù2ûè3³Hø^’Ïz’ìLSÌ,Ô0-…å°)¾å=<<Èœ’Èårâ‹g4UV‹8>Á¤`ŠaJÂ÷’|–$%qübr-…ü~¿ÛíV1Áào±iHSZo°á;Sæ÷Õç p­-ƒAñþ¿ù|>Q·x<÷ß\.—ÓétüíCqm;+Y2%¡âø,aJb—·&%-DÉJ¼[ŠÙÔÈÅÅ…(NöªpÄáÕ£ø[¢:’ðC‰o–OI‘-)‰ƒu»]Qˆ:DT#“ÉÄ2™MÕ—ÄÅØ…ØuâïÖj5Q)YfŸ¤R)ˤ$¾Û/--ךT%
-)	­õûýÙlööö6NUÌlªBÝ%±Ä+ˆ×©ÕjúCˆºQ|ØÛÛÛ«««à …BÁD)	òLÓb-Q(®âv»-ê±+¬‘’ "Á́ÀHhÞ”„Šýú¼¦üÆÊd
--…BÙlVì¨R.—Kª”ù¦c=-)	yt:ñx¼X,&“ɍ=???>>ÞÜÜX>!Š¿ß/
-•½’?ýôÓ7×Ã:,%áñxdHI`þåÐÀ¾#¤‰ÞK’‚üˆ½6[ÏW-9Ž_~ùe÷îÁ~øáôôÔëõ&‰B¡ Ýæ©•’øúÞ}jF*Àp4j^¢’Íóóód2™Ïç///ê&#†Ãa»ÝG¹T*Y;¡¬‡uvv¦ézX‡¥$DídxJ‚ˆ3/‡-)	ùSÂb±˜L&ßGƒV«U«Õ.//­šŒ8x=¬OŸ>©»–Øɤ$ü~¿!%
-	fXŽ>-…X,æñx>}úôÃ?ìÞ@ø믿:Îp8œËåäù8777›G­ÕjIû f-GW¹ß‡Õ]%Ñh4¢H$èü8±-‡ÇÒÒÒÎÎŽ ¢óJ"hÿ[kkk*	€N†(Ç+‰{÷îDåçŸþ\%qçΝTï¿Ífs}}}nnî¢ïÝ™™Y]]-ýû°º«$677»¢è#-äçŸ>³’xûö­JB%”‰ùÆŸT*‰ÏT†ÙT»»»Ÿ¢H$hs$Ø,-•„JB%ѦŒ¨×ëSSSÓÓÓ+++ûûûm~X%$ÅÛÏ¢¯$îܹcT•ï¿ÿ^%á]®ÞîMŽ-äÛo¿UI$UFÌÏϷʈþþþñññ………Þ{O•î)-#--•P5_t&³!ŠJ¢ˆ•D¸3¦QIìïﯭ­…h‡e„ÞS%á‚€ÛGöwøo^Ù¬[lß=ËgÅ'þMK<«9ãoQ¾ÓÓ 9ÂKbA+‰ì/3-–õz}âæææ¿vþ»*	 ²T*	•„J‚4.ž6-"PV*‰Šxýúuf•Äææ¦2"l“pRLOO/,,ìîîžû+ÝUá¤3DÉìRi#-p¥z(¦úž4ŽCÇ<-T…†Ö'ʈ`xx¸V«eùET]3ó€Bܘʴ*‰vG•'Ûdz¡TÆíÙÿG%Q ãÐ1-WIÜ¿¿÷Ûk¸Q«’8³Œèïﲸ¸¸»»›ý*uWI„AZ•‡(iÏŸ€oO1Üsÿ•„J¢d§d*‰b]ªð7¢|„JÂ1-ô)½,\%-TIlll„áÐøøø™eD>}jjjee¥»Wn©$òåå-Êz4-¤½„lLYO¤mÉ¥’ˆd/Ç_I´_Ã,’ži쎁EYç®÷HÚ
-B„gîEä^J-ZI˜¼-Ç<Ï?¶uSI-:D9³’xùò¥J-b8:,#‚ðó×®][^^Þßßÿ²Âº®$fffÌ?h?DQI¨$ZºXÈÎÎN'eD___ÿÌÏχŸ/ÓåæÍ›ÝUá¼SI-çÄħÅÅE•„Jât%100055~¦¬ÏXVI-"À'•„Jâ3•Dû8"üÌäääòòòþþ¾Á‰J-"¯$Þ½{§’ȦŒXZZ
-›eqqq}}ýÌÞS%-ññOÅé8òÚȉ¤Ù|Ó’™”òèÊÕéù)Ÿã¶r…-ññOÙÎæ-îFν’(\"a0ŸTÑ_]#?ñsßV®“-%-­sˈ0ì?¶³³S‚QŠJ-'Îéè1¬•J¢ó/•ÆW«H(ñE†b[½|W&½/˜Ò…¥Ðs$Ljá]ünq÷»J-:©8¥¯Ùûäí4ª„D¾]Û*ñÝQ²‹[Q.Ú…®$2~íK‰ïÅ-]I<|øP%‘ÆÓ•Ï}mDØò]¼6B%ÐõemmM%³¯¿þ:¥Jbhh¨â•Ä­[·Â°üÙ³gÉî2•-]IÜ¿¿•DOWn½6âÑ£G1¿6B%ÐõE%¹>¤TIŒŒŒÄVI¤|füÚ•-TI<{ö¬¸•ÄQòùòåËŠ¼6B%-%â9Ìz\~l룒(͵½(ŸRÄJ"ƒÓÐ-TIH$-]I„}”F%±¼¼œìk#?~\”×F¬®®üýßÿýù/ÿå044tÿþýôV~eeÅD€s‡(õzýø	bóöíÛ”*‰«W¯vRI>xðàùóç^‘”
-C-_è‹215í$ÚY¸ñWy͏vú·J¢‚gMö/VÈ}S$»d‰-²\Û.>1ß¹©½§(	n·ØæâƳª*	•D	.æ©n¢,ß­ïŠ%¾X‰-d6S)Š”(’Iq¨e$–ÑŽÙÇ3Þÿƒy,T(j†ÉsžC^ׁcÏžå9ïîïg?q?c#ŠÅâïÿû÷ßÿí·ßlÑÝçÓúdooOJ-›wÞygxC¯†:îJJ-RRqŠX6›ýõ¯ýÞ{ï½ùæ›	†#~ðƒ|øá‡KKK½„#N~¹:z)~C¤$-3%ñ«_ýêûå/yï޽׶®­­Åë¤$-ª×V,GGG;;;ñT€R-%JD=xJbkk+”ć~l>âÍ7ßü¯ÿú¯¨ymŲ¾¾žH§D-…WL‹øÉO~òá‡ö‹ˆÁÝ»woCJ ÇeffFJ"dŸ~úi€)‰ï|ç;áä#Þzë­ÿøÿˆêÞç^%ꜟŸW¢-VWW÷÷÷CÈGmmmµÛíÛa“’-½¬w&Á—n€G‹?%áQ-í^õs-¦“Ķÿ»!ŒÕ°Ú-‰ÉÉÉ“ª&*oxp)	-/ë‹/¾”DÌc#Ne³Ùès¹	R-…¤ÆFœ„#²Ùl¹\Nêç—¥$-ó{šÔ§HIŒØ^
--GœšžžÖ‚lM’ÉdjµZÇþ¼±±!¼yYŸ|òÉh¤$bqZÆLMMu7‘’--ˆ-ª“ù²Ÿ˜Hïq‚¾Ã;«+VJBxük#ÎO9ÏõRJ-Iå#nÞ¼™ËåJ¥R´ZUNœV5·nÝ:ûYù|>ž[*%-É‚»qãFTx‹ÅÆ"ºŽèÉdb«Xfgg•(-‹‹‹Q©=¸\.=Á›7o^6MyíÚµ7nD•ÆÄÄDt©©©b±•
-ÍfsàUMµZ}mUý×8ç^II-]›óùüù~°ããc)	c#ú411Ñh4’½")	€T$]Ûív{ggG8"Ì”Ä+ÒÑ·½^¯ÕjÕjunnnvv¶ôµ¨ÆˆþÍüü|ô_cÈ#D§}tUM´ãŒHHI-ížŒÆËò[æ~â‹-˜è|¤$-á’ÃYá£ñŽc5¾Á²·ËG-år¹V«ÛOxúF©&éÞù)W#’8•1ŒÁºqãÆÌÌL«Õ
-ùžLOO«R-­V«£liii?]-ˆ?þꫯvww¸È­[·ºö †¦T*iAÚ$ú¦ë:åêèèHJbÄÆFÌÎΞÑ!ú¯Õj5´zL‰-…B.—Ëd27oÞ¼víÚÙNÂëׯ߸qãÖ­[Ñ(‹ÕjµÑh¤ýªóù¼D€1¯IF`ÊÕ¸¥$®66¢c„DàeLTh)Q-JLOO·Z­ŽV±;wîIIпùùùL&#"À«k’M¹êHIDÿëë>í
-…‚B-JäóùÅÅÅŽn±•••ÃÃÃúïß¿ÿÕW_mnnjáK……	---’-'ð”D€ƒ---…èZ>ê›u-’¨¨èHnnoo‡Ÿ’ˆÎ9ª—¢)*¢KÈf³*-‹‹‹§…v»=ì4DµZ-—Ë¥R)úè\.711¡ì-°Ý:Ù5)%1ÚË5ÎÕ(%!%-ÉÍôæ:›Ê¶üÿö¶ìîþ/%±µ]j†Æª(˜Q—ß‘µ--WÍNŸ¥!ÌÀ[ë'¶2¥$~µGªùhã->NC¨«ÝU¤2¡`÷UP&4>[µLøaMåðfvÒ9=“ö@*%1n#TS*ã-41zä-ÆŽ”DìzdM‘’¸!%ñJÀekY×V3vílâã7Ní§…Ã—”Ä?/%%Q3âì§,ßR'=…-6.%qX§RàÏGÖI)‰ÝEr"åàõ(¹W_¸¦<Áo»•’-	Jžò^ÍÀ/%¥$ž¦ïßG_fJâqPyÎж¦,¹š5åëë—•Ù̱kYò)Á)‰²ê
-)RMzë|Ü3àèS»SQ=°~ž?`†´šKIè-æR‡…`ÄZ–|&p\JbkU‡©æÓëï.y£xö^=a›2¾Bf¡­Mã\úy­,%¡7-fM©ob'… |-KÝSË+<ªHeŸž¶=ñ(%ñ¦oôŽ¯œ)¨¦il2Oje)	Ý--Ÿ½ëƒ)‰ú-&%!%Õ¸R]qüRrvJby‘¤$-&%!%Õ¸R]qö:rsJ¢LYSêç-˜Óߤ$-pÏãUàg…§&F$)	-ËK¸ïkܲëïkÇ7Åë½ÍúJ3àCÁ²Ò¸Huû¯ù¹ÐÖ2ëä-•’XxÉ­œ™’È9´Þð|šRo\½•BJâøÞ->(¤•S!¿npêð|¤$â÷äR£-yÚýLJÞv÷--É/ü¾F¿¶gÖßZqï-RÙà’’È¹£)‡µ6uéäEÁf	 yb=øûFt)‰…u2%%ø·‚ãÎÞ2êob÷¤$ÿF§Ï-ÚÎ1†…0yhì덫~8)m.ÕÛFÌêÉ«§”„”DΨLû[ÁÁÃ3¶o\¾šÜ–’h)’>-pvJâ9"(!%‘V)‰&ö¨ÑqmJBD`î¾nèê¹{—%%!%Q_žÀ”’°‚$<ÓÅ6´”-áÃ3äi.|ÇÛXì…½qÕ¥Þu<-nª«÷:º²äkŒœ|ÝW·•-Õ»|ÍoåÌ”Äkó{
-ϲ6t«•YÚö
-Bþ¶ÅV-ùE= žw|tå
-ª10ÕçÀށd™$-/¨®öÁ_¯ùEI¤$¿S¤$¬-Ÿö³J×XÛ1›µ'ÈÆÍKŽ-ʹÝUJ-Óu})	›‚œ-Þm)‰ÊRÙ--ïÍïÿÛgÝsÐ÷÷"…Ü`ø	ð´AzØNùìׯdÎá#¾Ðm–-€TìYÊÑÇ>sj;'ÕrF·\¾²
-¹Çäàiƒô°ò 7°œFñ…n¿-×3§×Õ§¥M2‹ÒMJ-<4[ü‰#Rß5VZ·©¬«Þ»ïr³ÈòÞxOõ
-G------…</}ÐO½³ŠUÚðª{¿xÎ*ìž
-z¯¶ïšßu§®93¶`--9S¤µ-»ïîfûœsUJâýˆ¤$®ê¥--LI¼óÑW=ætSi£Ò¯ÂÀžSFÌäQßRWe)‰ÞΰüE0¾[°¥’’_$HIÜ–’¸gÚ¹0%±ü_+e»{Y	-J---K”‹)	)	Α×?£H/A	-5Ã<at,—Dq-ºkeo”’’-z_‚0hqõ~M6ž_RQ9»ï„…åy)‰„aÒØ¥£¦èšÿ‡Øm--£x*Ë9”"%--áÍôõu6•mùßö¶ìîþ/%±µij†FÁŶ¸ïV-!Í´°ÓúRWߨ¹å'->®‹NŸÙÔí½---ðäfëß‘-!ÍÔû´ü‚÷ƒHI:Þ{ŒÕ§/¿Næpm/-!ÍôÅ-¬m—‚ò¶ìî#ëÏŸ'ãØ‘j†ÆŽ?ëë-	Í´¼Ó:RKߨ¹å¯/>q&9`ZËœ]cÝw++Ö®…k™|ÀÚ¨‘jÊ¿öê+Vš.5µd]œÑ
+þÑøªéRsìë¦K­‡U¸l‰Ïzë¦Ë2ò&8ÃG„1½C²I·ÙKu«d™€²{w¢®nÊ³+‘[Ò£ÛdÇ0¾Î·;žê
+g»#½9ñ†¤"íyõ½»î
+±zï³÷9Lrþs^)ÆàûK ¡T4bè2{•ïîQr‘­î+äÒë½×Ïæe\„ŽÝU,ý9϶Úyø¦ÄÈ(âá%lrΔK-ªÖœ—¬xÿ58çò;
+º½ÌíŽ;ê¼¢ÿ«ËïxË:þ\~W_ôÕ]~7¾°Îðí|GMìŽ7.¹ünþ"=iDXäâk=´~Àå	.*È/¦¹úu0Ó¢ùg»ÿ­	p'endstream
 endobj
-64 0 obj <<
-/Font << /F8 15 0 R /F14 37 0 R /F27 31 0 R /F26 12 0 R >>
-/XObject << /Im1 63 0 R >>
-/ProcSet [ /PDF /Text /ImageC ]
->> endobj
-69 0 obj <<
-/Length 1147      
-/Filter /FlateDecode
->>
+92 0 obj
+3425
+endobj
+96 0 obj
+<</Length 97 0 R/Filter /FlateDecode>>
 stream
-xÚ•VKÛ6¾ï¯ð­kŇD)—-‘y*ü˜øõ¯"„+ï¹¼e‘3Æa?{BM½ą–Mždº4SŒ·îšDŒ[´±ó,÷ç
-÷§¾ˆ€üÐ8¬ !-Œ°
-DÉw&z‡ÀöU/™-“‘ïÈÆÞ6ý“ác’öïq>püw-®x¾Ý`/ð¿õ<±l;&<¾›»&5âm( bXTýð¸q熞KB?Í–Pµ€îñA×!@:Lk$?IøÀJó±æ0†)(‘-8Z¶¾¯›ê³óäԝ馽{‚æÝéÒWÑöòtÊ•½·
-ö?Ì^¬ñå¶AËWo@•ôˆ¥<ÒÍBºäçPÊÿ
-e½?ÄPž³G½!dr½ú¸xy΃á+xœµWKo7¾/ô/Ì-3 at FE=O‚$‡hÑ`ŠœõÆÛ‰í¾þ}É‘F¢vÇz|0­)’ßLJ¿ZÁ ù§ü>Ü쾆«‡Ýr:ÀðS•>î¾ì ü¡ËíáåžÐ
+I%o¼öïwPÊÇ!è }¸Ùý>~7ÍNŘþ±ÿ‘¡S$Ñ¥HyI—›LðãõÊF§íxœfPÆXíÇÛiFƒô‚?MZkœïêãÕ©˜+!rŠãø÷ÄùE4Òøý4›dU¤Óæåu5yQ]»]ßÎP›(¡6˜È²_¡&,­J!¹%àU|lâ‡EŒÖÚñÐNUÜ¢‚ò!U:½ Ç#Eíf‚Žœ«Ðb‰aôsýž¥”V¶éŠ,K3c“Pvd6’33˜üö¡Ñö¢Ñ²å/“œÀ¶<ôT3¡YÌCÑ÷Û-R2«¨+çÄfò8™@í
+‚èô-›‚QyÈc°Û6n"_yQëu1>5r	XU=ývEÌôfZvÉš´k1Krÿ
+öÉÑ‹‘VëÔ/l‰þ‹ò8¾šœÒNûî°‹“B#¨µJ+‹>,ºZâPÀÅ1Ìd[­L€
+†«	滯÷»_éç?Æ·ùšendstream
 endobj
-68 0 obj <<
-/Type /Page
-/Contents 69 0 R
-/Resources 67 0 R
-/MediaBox [0 0 612 792]
-/Parent 50 0 R
->> endobj
-67 0 obj <<
-/Font << /F8 15 0 R /F26 12 0 R /F14 37 0 R /F27 31 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-61 0 obj <<
-/Length1 1132
-/Length2 6144
-/Length3 532
-/Length 6875      
-/Filter /FlateDecode
+97 0 obj
+1160
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 22 0 R
+/Font 23 0 R
 >>
-stream
-xÚí•eX”m÷îén¥éº»¥»‘º¥AºAiPiFî’i‡‰=ïÿ}÷û~ÜûÓ>öÌ|¸ëZ×:Ïk]ë>†™AGŸ[ÎÎÕ¬ì
-óäæãá(hÊ›ð|<@ <3³ò„¸ÂAž`q-±•ƒ9@Á-rù;$$
-àµu…"oûßa!äÉþ&>-¾>-Œ›­
-t×›Š_†ÞÑJ~î…%/H
-ýœí¼ûLÅ]³ù*óÄn§Û\Bœ>ô)!"»n€9^Dñ~4å^ïi%ܦ]·Ÿ¨u"©aÔpjr±+ü‰Ë”kckPfU¦hx
->ý¨Ðèú­Ù!¨ú¨ 5F>û®ö…¶ÂÑ¿Òeù¿»–ßëkµ…‚¶Sž86L¦öçrˆm­1Yý¾<¼CH¶W3+
-O^F˜Ký…‚@RäsR”D±É€—Þãö¥<âÇ.)Ÿâ£Wk$·GÖ´u_EMzâ"|¤}ÖP"×ê E]þ¥öÔÄD§ýR…|qQxõZl­»Üˏ¶-7
-ævåÔžŸ)HkZÉdp¬‚];Yìß›‰ÅsŸ°aqŒç
-‰á‘‡>}u("»à1~Ìç8ü@9ím˜©æ„Só#=Eßèaij‘âmç%	)U»¾±ù	+ßÎ¥»Ÿ`¥»Y¯„¥°_SЬòö¨$ÞÑä…K­–Àø¬.̲OñÚdÞêqO…Ùq3¬NzNè<~%ösw‚É\Y
-œàbùTvÄNâåý²Á§¸°o¤êT	*Wë}ËøîCä+Ì´<¡Qç`âüÊHݱoô TÍ^'å§$µ׿0¢x€PÚ~#°ö¢D<¡)Œ$÷kmEƒßåu‘ž_eƒc)S'Ë,ëÇóï릉´q¾TIÅí¿ðu!ÜØ5mi®¸™
-"_ûi£A%¶…bü=&×E–u«d$ŒB³+O7ß[̧ٛØ< {ü«Xî\ú>™aq¦/åÄy÷\DaQ鿱8ªvÛ¬#°›é©Š£nìÖZWî¹›uÁy—Œà/
-æÖVؐª•L_+;üÚ$¢ÊZE%xZ™¯<6­w¦³XŒH¿¶KÊëʤlƒ|ö|3"Lÿ–¥UMT̾Tò<~L(ÜþéñzîFÊ/Ý'þf5ÝbòüÒ9"_¤wÖB|4·&&²˺¨ÙÛÇTªtÕtwK(Žíu/B©éîû=Mé¨ÐåV2òÏa³µy:aÅ`aµ¦ÑaÒ‚{Öê·÷TÙÁ/‰Ò«“¯~³Ö<$Þ#Îw4»Ý_"¼9±ÄÖn;&ÖMº-z¸_L(¢½(S"ßw,R?ܼ‚¯r€W–Þ ¾¾¼Z©&Û{/GÍêß_é•BõÈV¬rØÛM1_Ä<"ó’’+ž"x#Ë ºŸLi5ý	Úx¡"‘†¢åEôúY¸åôü«j<¦\ýe‡‡N‡^õMâw‘>tÙîËõØáMÄ™Û$–9’D\Oö¯°>üH5á
-`
-!—šÛ‹ÜíjQàrð˾¹Žƒ
-Ïú¾úâR‰€;†1ö&ÜÎc‡|
-™žHï£éø˜b1'\EœªÄ>’³Å[`ê¤driøFoT'íx¢Ô^1,	¢`1¢.Qç»KGÉÙ<XçL«¾–jmÕoºáaû:(û¼}y3ùtìôAä
-ùJú–ä^tô÷‘=L̈؄¬OÏ·¯n»Îrq´ñG(¸õô¦%°³%篽œ31m™…-¬#6Ç%Ø	Åí‡ÝÃw¯X™V~˜¸UUeÃIò,Ÿ­˜æÊê$é¶!v%×aÈ?ì±	‘|ç±ÉusŽˆ­©UIˆ°HEÄS‚²œ·ÚmL,†-ƒŸæ–2ο{x‚¡œáÁ¢È2N¨§³yLê^²N¯Ú¢ÔT(“fþ%m™âs	ö~ÙGXè´ôå¯UÄŸW4€Ÿ)xîW=¿[Åd&Ý1Y‰Kf…qi}ÕL¤¹*ÓZÂ<i»É­iÔhÚi¶†Uw›‚ËùlCJÎú ä$ùö,ÇiTI¢nB	åu\Å_"C§í‹hPžr ÚL3“/twFh…ºü°Lˏx˜0È/ñ˜
-b­a(DqÐj•sŒøA›QâyKŠ‰ëNÏκ4Y¯¥Ðà˵'Ì»‘þ%(;aÖ1²±Í…r=‚(Ñ„-k2KÖ(Yª\nz–Yá”<×çkÔÂÿå“4Š"êc"H+ߎLQÔ/dY抸³³³
-ä
-:v}ð¢Ç»«ÇVi÷RDy™JªH%&ú`9…PÏŠªV  ‹…1—(h}Ø!ý&ýá¨è‹T'Éû|D×h[èN
-ÄBñÍ_øÚ*•(j»`ûÇ0€Õ+2V3õaþ$ûŽy#h~ÓFýJbúf=…Ë;›GmëƒoòXkUWB8=¦\i›–©dÊmÑy{‰ÕÏQ<A–Ô¢-°tȹ1W'|DóÖ.µ@¤Ù:ÍJ?x‘YÆJdøøœlL’–ßJxU-œž£¨NæQ-b&7å
-~|ïR#["Ô"][Rs4¬ÉgŒèâ ú]½Fx’S!-ÍT5*4ûÛ5	Ų°™¨].ÓíÌ/`”«ÉÓ Xß ‹×ÕlÛ››N4SKöáóA~¦J,A¾—W_Ã_ÏG׎Ò*³U:™’hRÜâóMgS–êCÝÈŽškî°fú`þµ¬p5tVí"«¼“H±A Ò ‚Z×÷³¨q(Nü§ú”E´˜ÇV¬üÿHü¨{¼U‘ΘDúJq¹ÞËئt?Ùœ³Êêb+È£™?óÉž™w!ÒU:æ‰î'­Î_‚lCÇŒžγ†èX ¸(g6f.Á,Îë¾ágJ»„†Î'6«+•ðZÿ©úÒ_Èa*95&#ÄÎlWó8º?ûáãJ_yU¿Û'¯¢E‡œ.”5Š‡8qGBqªô¬Íg‰òæ‡Qz³-r†„~
-èü7ðòšÐíXñMÜ3Tbö!™zŽûÜìwðji«	ß'…”y·½Ov™û”kh½½w$aopÙaVÖ´#›LtÔ³òP•t@ò2­ÇÏ1Nè÷ìÇôêڏ
-)g¤¿ªWûaZœûzD:Ìgå~û&´ä¹ñ“N§,Fê§æµH¡r†žµÌ‡wfgz÷xï7ºõQß<yì';9ÃÞ㦒9Iø9â=çAvD8ÑôTn"ÔýbÅÛ÷Æ}euçW\®åi2ö‹£~îêD™æR^U(œzM!ôÜËåA/ñ£9@ÚØê£é]Õ [%ê÷Ê5›l!—ëÙÎû¨/ï?Õ6zå:=“Nàæ³`8„µ
-àô¼D¸k‹©>5þ$³«rw.9dŒÏ¨>ë
-’×<zXäRÌ™…͉—¢QcI4qµZb©.—<}÷’`Æ#ÀZjsÈ9B–Üj¢\XbøB o—õ€“j­<›òò±k“trà',Œ_¬þn¡ùú¼x'䓆XPÏV™Äh	é’[)ÌÄ¡–ÖG©S‚D‡e3ZÃ»ÄA¤º<£}ÀýŵxHú!GÖ)¸ÁjÖÇNk@†-qz:>bj¸œÃ¡
-#è{ɘTéNà“öñ#«½Ï¸‰¹%•ñÍc“°1kwÉLYÿ­°z³Ê©Wm/ŽØÚ›ŸŸëõi‰´j$6qyz(߃è¡iÀæêjûK´xõ©½*~`Ô(j at Qà†kŽ„þÔ+X0
-K3”¯X2Þ¶©BVê0Ëëm3G®µ…XÞç»Êõ±½Œ[–9w5‚9F~a¡Ç<R—æþÚk¥y¨tj0ÿÌoM@w•°úË|¶öHŠø݈Cs.Ì å£?ý›Ür©¼‡ˆšòôv;»H
-§ö+/Contents 5 0 R
+>>
 endobj
-62 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 70 0 R
-/FirstChar 12
-/LastChar 120
-/Widths 71 0 R
-/BaseFont /AZRZGN+CMBX10
-/FontDescriptor 60 0 R
->> endobj
-60 0 obj <<
-/Ascent 694
-/CapHeight 686
-/Descent -194
-/FontName /AZRZGN+CMBX10
-/ItalicAngle 0
-/StemV 114
-/XHeight 444
-/FontBBox [-301 -250 1164 946]
-/Flags 4
-/CharSet (/fi/exclam/colon/A/G/I/N/R/T/W/a/d/e/h/i/k/l/m/n/o/p/r/s/t/u/w/x)
-/FontFile 61 0 R
->> endobj
-71 0 obj
-[639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 0 869 0 0 0 0 0 904 0 436 0 0 0 0 900 0 0 0 862 0 800 0 0 1189 0 0 0 0 0 0 0 0 0 559 0 0 639 527 0 0 639 319 0 607 319 958 639 575 639 0 474 454 447 639 0 831 607 ]
+24 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 29 0 R
+/Font 30 0 R
+>>
+/Contents 25 0 R
+>>
 endobj
-70 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 12/fi 13/.notdef 33/exclam 34/.notdef 58/colon 59/.notdef 65/A 66/.notdef 71/G 72/.notdef 73/I 74/.notdef 78/N 79/.notdef 82/R 83/.notdef 84/T 85/.notdef 87/W 88/.notdef 97/a 98/.notdef 100/d/e 102/.notdef 104/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 119/w/x 121/.notdef]
->> endobj
-36 0 obj <<
-/Length1 750
-/Length2 576
-/Length3 532
-/Length 1110      
-/Filter /FlateDecode
+31 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 36 0 R
+/Font 37 0 R
 >>
-stream
-xÚSUÖuLÉOJuËÏ+Ñ5Ô3´Rpö
-Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥r‘g^Z¾‚9D8¥´-@'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<8”0äs3s*¡*òsJKR‹|óSR‹òЕ†§B盚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l
-‘È,vˬHM	È,IÎPHKÌ)N‹§æ¥ ;|`‡èGFú»jCã,˜™WRYª`€P
-æ"øÀP*ʬPˆ6Ð300*B+Í2×¼äü”̼t#S3…Ä¢¢ÄJ.`
-òLª
-2óRR+R+€.Ö×ËË/jQ-š¤¥$e~sû]F1ñÊ»Ï/ËÚQ?ý¸mò»³·|<ċݺÔ/¦Ùq'}Iüö„+6­ìâEíÀgŽ¯¼xT.‘òGÀ¿gtÅÙ¥vՏG‚—U|íª“®¾~ª€]üRÇëÞ…_kü9¹öË:½{ápËñGúý
-îûd}dN<6Îø-uBÛošHºÁ=c¦MÏvHžÎzºq½aûÿìRKë~,KÌž³}Š¬Ë›ªÂå»m¿‡Š÷Öêyo›ù~ÉîÃÜ×v‹
-Û_¹éÜÿs>§ß¶.#ßҭߦíÈè{­/þô­É™kÜ—<nÈeà‘œ[»«×?Ñí[ïÁ§÷º˜ÞâdÚe€‹ãHð1Îcê+öÍ“_èeÍäž7aՍ-<Ì
-{fýß_áþZ#MzîáUü.G?=¨=ãûp®Yõ'åǶ‡/¨Tñå}[}âWè:‡)ïÓ»ÚÕÎÖ0Ê3íÿ±:oÝ;K©æBÊû.l½ñcc«yEá2ÿ
-óî-ÆŒž×¦ÈWµýþdöä“Ž¡_Õ~Ò+	”áš”iïsûs‹`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØad­j|ïǝéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ+/Contents 32 0 R
+>>
 endobj
-37 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 72 0 R
-/FirstChar 15
-/LastChar 15
-/Widths 73 0 R
-/BaseFont /YYODSQ+CMSY10
-/FontDescriptor 35 0 R
->> endobj
-35 0 obj <<
-/Ascent 750
-/CapHeight 683
-/Descent -194
-/FontName /YYODSQ+CMSY10
-/ItalicAngle -14.035
-/StemV 85
-/XHeight 431
-/FontBBox [-29 -960 1116 775]
-/Flags 4
-/CharSet (/bullet)
-/FontFile 36 0 R
->> endobj
-73 0 obj
-[500 ]
+38 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 41 0 R
+/Font 42 0 R
+>>
+/Contents 39 0 R
+>>
 endobj
-72 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 15/bullet 16/.notdef]
->> endobj
-30 0 obj <<
-/Length1 1884
-/Length2 12110
-/Length3 532
-/Length 13167     
-/Filter /FlateDecode
+43 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 46 0 R
+/Font 47 0 R
 >>
-stream
-xÚí·UX̶h‹»k€-ÓþסþkPÑÈÒÎYÕÃþ?Yÿ™ý/fþÃàö8Zºt˜ÀýeOÿ÷ozÿ«˜¸	ÈÔÒÎÀÂÎ0rt4ò@_0±¼˜–v¦@w-³›cåÉZÅ9Wƒ§ŠTbª‡ðëd=:®
-=YÁœš™6ja!uYÉ”1ÒÊÃÙÂ6Ü0’a6¦‚|­ÂZh×®A.XÏEùIoO&pQ,"¹ËÍSVüa™ô\ºbæOÑz„-ç@Ú íâ´O_0=ËN‘4b4…à§NwY6›Æø¶{é¾nˆ'݈õ|>CÓö–éÿøø²CDã
-«†õ®û$á7æTŽüâ™}aϏ[ª‚SÊì”/$xß}©ÆÙs~’ŠXûŸX¡o˜|RI)®8FئçÊ›¡!;²ÌðÈõ£(O–d(@«vC4GìBŬ˜•aZ±Ã-!vDzáŘÝþÓS-íiËTéàÈœ ã™¦¨–[yÕRËhYWÈ“e¸XƒæL#e®
-‹¾
-ßrfsÒîžHW´¹T_lì,w[Hññ“}Âò¯l%VHõga¨tÜ¡DrE^ÿíGÓÝ«’”˜®+WOñ
-‘ڠÇ0 ê»ÁºÖ^VºÔGqX•½Y‡+þ˜ÞšÄâ9-¢oñæc•›i‹Š.KÚ¢]g¿á
-Ø’[¯l(¿FNPpv?öG©E²LÙŸfIald–%ß=_gú£:,rëÎA\NzL;ÝD	U`ç鏛pZüËsó®„Ûi;|„ÛI'Q,9ÜÞm3¾T|{`¹Àn7NFd½~°ø’ðAЁ
-Ißê9`[v „Mqg5³ß]» °ÞbE*µFF¾ë—_ü¼ï¤ MŽ3ŸU¤y;º”ÐñaUÓˆ›çô×WYÒ~ÒœÒFÜ·[œîùmâ»Â ²¬‚°OÝÖÖ-ò•ÃQÄ:߇(
-—¬	”ñ>úµ{U3^30r壝1#³3GY@~Lj‚Ÿw
-¶Ê<Ä6 ?/óièT{çýØenpŸ„s¥Lɉí”-ph¯m´»XÖÝmk<öd%n¹LA,¿f¶í\æOôD¾ZH†÷¢ýfåÈý¾1€æINU@	‹û{Lï'‡í½æÈnÅÝÉVf8ŸFšUr÷Ž`ôI”nvû RÚV™°ÜMÜÕ²¾áÐáííï!Å_ƒSÄ}Øœì BÑ-P<5Á_ëÃ×âéþ¤ʾb‹±Û1Ù©F{ÒQíÖŸÅЃ퐊¢šF¾¸+³/é´ÁËdV¤¶ýC±T³DâîݾW…r¬nì´œ·\M»b¢_£ÃðPz-vªER<Ãp
-…y7UŠ©-ðåýFsZ>QÑIâf÷ñßGT9ûuø
-q·~•)Šo™×kƒ3èÐü)B{D˜Y2#ÑÎ\"I¸ÂK‡Ú*¢`GÔ6n–m}bÓÑm•Xh%›ŸaêÜ÷àA½Ã8}SSf±y¦ZÂcj ™!<ëGºšK…µ%JÊ1®¥¦S±þÖ&›>“M½÷Ú¾ÅyQJþ¹ÅU¹AŽôЦ3Ÿª/+<ß®%ߨŽ°L²R–ñ}Ý3Õ«üG‡­ßÉ¥";ó̳ùm f=°O¿ÐyîøÿÖ	ü¹µôõ¹Ø?+3óMÝvfoOn%˜ËžüÆö½_Ì6ödU²½,-nb]«¬av<.ò>z“®ÜlÅ–K5×&¥,vËÕH‹Ü—º:0ï„Wñb>QqPCÐ6ÐÞ¸Æ8ŲáÇÞ*YÔþ\T“¿Ówѳ(r¼ºnUõ)Ûø'±-«W«¼MÏÁæOÌãKƒ¸g;A˜˜x…ÈÖ”˜t²ò7ò;Õž8G­îÚ˜’¬Ü;t¡è»¸õM»„'JϾˆ+Y¡¿+A·µÚb‘­Ø‡”–Õ—­HtÒ‘>ˆBØ.žáî¿À,RÁÑ~ôÁÁ3rÅŸ•Ãðî‚'ó«_õíòáPÖf=e(»#ÙxуpgÆ-Ê/“a–Ú-‰’Ý{¬™Ž Û<sGñ„ùìïd7‰Ö2ðŽePH« ÒEëÕ-sÿ
-BÓgsF⸴.o« ,™;ß$"ýô®ßôàÓêÞR«˜q°{Lep#ÚºcVøžH¨4--kïù?VƒSÐtI- \ž+Í~	sYaß0s²ý‹Ôµ&V
-g¼IÕ…-tÝ;›—ã(Ö]Ô ¥@\¦‹0‡‚.ÅîòQ½f¢)óýÔ«š÷²$i4•¥O	]6êëôëÔ :	‹súÏr¢ö6ÎÑ(¥o~‹~ª.ì¢í)u·s/‰öyºe8!]¨÷0:GölC?ÍgŽ¾-‡}/BØeÎíx`²8¼A×â¶æí6ê™ mÚœ5¥qÖ>R-Šét‰¬î­«ÏÛ³ñžróË«‡Ð
-RPÕªþ7›ŠÅ7)ßì2©#UJç©Åýƒ‹È¼çU4tB
-¿æGZ¦SHÇ6Ú	ÕÛ6%œûc6&ů~gŸÑDë«›¼y
-Ãé×"$–°Šgpœ¸A vãË~Üœÿ™ùaR£“H¸‘ûúþ
-WŽ3Á~	i’9ÛŸV#Ý/[Nfæ
-Pw_ª`˜Ô
-O¶ÆEÏ8­|Kø[~êíb˜5‡â¶“½ÔD»M-ïƒôsø?TȱýB.|v D-wF¯Ãg3Xå²O¸íü’¼”|Z£ÜÁonëimÂÿãkÈ›®W~ÃçP”o”ìÞ-5Íéø´¾êïm¸y=¹ã3²i­ôKOmÛ’ÙG.sRæ!°ºM–,­KKvüÖh¤~‡}¸ÉeÃ#ÉŒõÈ‚ôÒÖHm''_ÂœêjE°Ùq®Y¹6‰”nxòWÿˆÛi1`¬öÊÚÿ꽐ã*-Ñ„ñ36|ÛYxIKÄVMÅ]Â%;OÈÑ–E-ËÉäˆ,d¼]gÚ Ø¡£Êe¡8Ñ’âO2¨PâóÑõ--‡¡£ÌWô“¢.¤ÆӁ¦Ù¢+oá©Á%ŒäU½ÀfÆ€:föÖÌšÑ|®+çævççBÍ…¡±m®æ~6ä-‰JâÎ:xOÒNý ®|ßvgúò¨~ äÜŸàwÛ×$q™·&™)PÒ€GWdg=íCû{ê—ÞÕ#²^̨É÷˜cj§ÑüõÞ‚sÌ4VØCU±µãLP[ÕÃÃõ!'—Å–H+ÊòÌ›Š	w†oîÚ±$Äø“Mó/Ž*eW¥;‘ßk”ùyw» êmÃoƒdÍo@:ßÚß	uG _¢k“e@‘ðdV­aÑ¿GÖ°ú֍`…Ôuù†lã­„™KëLßì›$ˆÝ0¼wêóu$$¬"ðó~ÝzÑà á.C…}ùÄßkzªUäïÅ‘ÉM™ÆZäM1iÐÉIÚ¯N¸Ô/³@{ó²irY×aÈú¼#
-*>EöÔ®L/ÍŸæørä~ >?À¶>ölëêò˜Ùlƒ7•<«éõ¼%54q1F~ðú"lgÜÜÂWÌR]j¹YÍ#TF¾œþí·2L³ì‘å%ÓxE!¬©ç“+üK^h
-Û)jzS(ôzêE¥
-î¦y¶Å‹ÌÜÿãddñïSf®Ø²¢¦¥•Ö¸ºƒ¦ÍãT‹ÜgR
-y¶{f\‹}ìÖ®Õ(÷&´š<t»ºIÍ®Ãþ›F·>ä‘cj÷Ɂ$粂Ÿ÷Š
-(’` uZeZß(Äák
-~±Ü¦¾úèù|‘äÑÌo™ÞÃûŒ(7ž‘‹÷m}2¬¶Ö¯Ò¯‚=ˆ¿‰ù;DÆ
-¡¼'׶	Dç¤ÕÃW¶ä7á[¦Þý^µ-†\×·(ÓC³"] x|ûÝsÒD¾·64Ž_çœ÷"9æh·¼™?~|Qd«?v5
-ÌYm¬Çá=!M6{
-:‚YÐ 	q‰
-î~Aþ­wZŒ:™³×ÀꁫæVßFhF#†w­þÒubëðóæŠöÏÉ‘…Ê0EŒaÀnå~ å5uQ@ÜRuOPàD€¶€ÔWìþ*Ã+8…Ú¾aȃÏaMŠfúèWÀ@W–-P°{ëfë&¾—ýƒ›ÛÂ,•ELW
-»-)0=JP~曣|$¸0l€ÍF‰oð¯0ü$<y6~ȵaPÑaÒ5‘yK£ó©È’èy
-)(½7v…-ÞŽ/ÿÝ&#ƒ‚þ­%SÓVf÷ ÃÎTLbÿý$ºÏÐ3±ó¹þ#¬ï$<‹ø&msœ¬ýR/±;ÃZûxi5ÕÞêC^r?,•®äû¿Æ?5EÐÇáµ³Q8|Ïpv«ÉÑÀéšèÇÁ%
-—Æ£ÐÙ4‡áôÐ/<ºvÑŸašhneSmŒPmy–„é¯Q]èc—š§xw¢«l£’HëçX«Þ„èvîfS֏YèÊ6Ï&wñk`Þ¦8Äÿ¬>{Zû}³rÑ”mѽÂù
-Ea|$ÄÙøk”Ëãî’ú\b,÷—á
-_å'=8j*¦NwhèµÑ‰ÛrBf¸ó ³*\¸|X4“KìFÌkAj»þÕõöx¼ëÁ›kEÔ5ªPC¥ÑwˆpÆ¿]&=ú×A	ð9ÅDÛ槷SÄ:­{Õ¸Ö`ìÒ˜°ee¯Â1hÖ•BÎÜY®Ó›’zžh7 at -÷ j#©j¤Ä³
-;qêÝ™Êq”×n´Éû^1ÅÈ7®ðää
-ø£`ñFØÞ±<èÛvnŽ®TñÆi¦'Ò‡ÔóÙF4î·´À%}·&ê€Þ¸R¸Må±aàn7:»H†—ëñëôë«»z¾ÝŒÁ²öõíò„‰hKž'í!(`”_[]´rhù7埥–¶z¯×Ž4$iã§y»¾h¦ëΙ)&ÔJˆE„ÖiȺ°]x¢×£÷tp¶7h¤û“úÍ–«ä»~›7ñN‚yP*‚=†3)K´´Ÿ=ʃXçúÒ‰FB&8 Éñã5¢­7Xç®; ü8./˜³"›n‹ç
-ž+f|Æû÷$%ß«.×ÙØý
-¶kYÎ]„0™<îÎ	\¾v‹ÌÁy:~7T¯ðëᄇ¥Ž+oV;n)غë;«Û’êLI˜µ‡rEGçõOw>&œ-Õ¤y0.ã1ò¢MûU•/ÊÁy/÷E.³ü`ÙyL¢‡)¾e~ÐJD‘êÇAcѵ¾´ªÍƒV¯>’±Ê™@Š„ã>N~raY.–(g;3$zG¯œÅÎýIK«óÀ½ïåÑñýå‹.eÎ4÷_J4¶2ÝÝ÷º$ß¾Ö\;fXŒTâ`¶ry|©°R\7}L±hDæZ5›ÒÂijk¯ÅFùݹìgSo‹{¨ñl¥Øh¤·kKÎ5=ñ¾Íòr۹Ε±a“ÆB"	¿2+­ïصsϦynèš¹¼UšBfµ¤¹}A€û!ª@ðì‚õí)?‡bh‚ _²ûv¤WÑsv†®H¹Z!¶5GHÐø$Ž¦§@`P¼µ{~rxùI5–~(nÖ3?ì*¯À‘>U*ýTB‡Xl—ªì†2‡nY@Þ°hŠx( cÒþ1"ÒÁBMÅØ„“ÁÃ2÷–ƒ¼Êæ-´¤ûüsέ:ÈÂß ½?ˆœýPZʼnÃ]Dsn’ ü„Y(œ¥`å1ér'vï;°úa$P–MøLk´‹$ƒR–Ea¤¯Œ3…Š”GUî¾IèF±3§ÇÑŸfSQìËy F,SšvRP»ZõGé)ÅŽO…XbM±?Ň%6[”K’ú*Ò‹Çw®)7×oIµáK¢ÕVúÇú´¹Íe¤sžGÜ
-¦gñ¦¹z~샡†–d½ÞîRèX|®?
-ʶ^ßËæÚMÌ?nÄ©Ir1ÁeÛLËP	û)jqßWä‡è5Ý'}áM’_k,•æg`ÈCò¬
-ía€7‘Jl¶ÊUgш3M¥’Ä*\]ŠmcÅO;hEÀh•ëR›ÇöF2à¾fŸŒ!	üÐànmÈ|h|ð|Ðî‡g-{ô2îÄlv¿í¢(ôƒ©7MÚ¯°Ö©òÓû׬1Œ8ìë‘ǐ=ª-˜ÎDÐ‡ WT¼6Põ¥iþÉCÞ&€«ÿöA;#PgO—RRYŒ¡¥¹Lyv(
-ÚýbÕôfF!4à:ißõ#2ÞŽ[8ô·YdÃGafԏ¨â’†	³ú^‹Ý…íÒ-jüò¾-¤¿Ö(Ep⤥𴴽dàÒ#T“`¦Þ­½h3^Ö©+|ÆÖP‡‘4‚àI]¥C*[±u¬2Jï»öW|ÎÜ~H㥨uôLE8L‹GÙâ3™|
-e`IïA.œPªFDçq„²A[ù'dú´½ò‡à³ÇaÍ÷Ç7OÏ©å:^‹&1‡¢!˜¢VÈ’ìÈ6(k, û]Š€¨…³å×hCw…óù–}ª\MÑwÚc-ÙÈL=Ÿ·>ÊÇ!¥)É"8ñz®×är63ÁÞ8ûun³-ùâª&.c¿3²Fñ‘kB{Òê$î_ÄÛ(ÝC½–kŠ¯þ~ëžlZ¤-ˆô\{ê*²-,–*G˱:x#f|Î9*Çs)ÌäônÜdÓ.?²gjНø%Fhˆç#,ÆÝAOàGœU‰-Óç~á£ÛýŽ/Åy•ÀìJÿCՍ%W’ü<£¸×*ái}Xš‹-ÉZ,,º[ÉƲ×F¹H¯ÈÁzÈ“©Å½Æ*òq^&ÇC¾è~oô͝¡Z‡î¾q?Ë™¸½î
-^HIý‰aU0™9ç
-‰w\`Õ‰qïLt/á3l×í9>ÒSF&´º¤â‚%àupôPÏŠÒ±ÄÑo‰a™ö0Ãxì%Ú+‹Z~³:æB]Èúåµ»ÓûŽBn!°Våªé´–-º©Ã;W0ÙøM›SÉßÏÖQ|m.¡c\3]ùY=¤ê¬Ç‰Â/ôq—x$©…¨˜Á»Ó€TocZ»£«Qez„7÷æz/ò\È]¯¿Ú8í8Q°¿Ï½ý8p;6l€ö-é¬!à¯XDÿ(¢-™´ž´Pô/6d¶¢
-8‰ñǨ÷ædq@P˱Úìå‡D¤Àç~6¤"<ÛØŽPš*»±>qB‰¥ä§²îµ«Ûfl4"³/Œ¿šÜ^».ØUmz–ꋪ60_2´lâcä<£WP9ËÆDoM}¹<hò±x'QH•ðE
-¡úfé„o¡W˜çþî «ùâ>ØùÖø>þ=ö‹ÙQ$ûkM‰z!föæ™J2¯è33´gíFî^íž#>Té Øl¥ª¬r766ÝŒ·Bù夳yîE×yíìùÉJçWÅgºÌ{ÅèòF³H);ƒç!éQý®4c[1qÒëÏ<°šÐ¤ XIXQjHq­R‡*ýã&͹>‘¯
-ò†,è5é jÂñ˜•^OO¨fԝ¼ð¥MsÝȹå}…züï¡ü9?ñ¶”°×XÐÙc×Ä;‹žƒ?¦¬€®Lÿ¿þÿÿŸH`b4rtÙ9Z#ýNÑ4Hendstream
+/Contents 44 0 R
+>>
 endobj
-31 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 74 0 R
-/FirstChar 33
-/LastChar 125
-/Widths 75 0 R
-/BaseFont /STLUGA+CMTT10
-/FontDescriptor 29 0 R
->> endobj
-29 0 obj <<
-/Ascent 611
-/CapHeight 611
-/Descent -222
-/FontName /STLUGA+CMTT10
-/ItalicAngle 0
-/StemV 69
-/XHeight 431
-/FontBBox [-4 -235 731 800]
-/Flags 4
-/CharSet (/exclam/quotedbl/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/A/B/C/D/E/F/G/H/I/L/M/N/O/P/Q/R/S/T/U/V/W/Y/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/braceleft/braceright)
-/FontFile 30 0 R
->> endobj
+48 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 51 0 R
+/Font 52 0 R
+>>
+/Contents 49 0 R
+>>
+endobj
+53 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 56 0 R
+/Font 57 0 R
+>>
+/Contents 54 0 R
+>>
+endobj
+58 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 61 0 R
+/Font 62 0 R
+>>
+/Contents 59 0 R
+>>
+endobj
+63 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 66 0 R
+/Font 67 0 R
+>>
+/Contents 64 0 R
+>>
+endobj
+68 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 73 0 R
+/Font 74 0 R
+>>
+/Contents 69 0 R
+>>
+endobj
 75 0 obj
-[525 525 0 0 0 0 0 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 0 0 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 0 525 0 0 0 0 0 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 0 525 ]
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 78 0 R
+/Font 79 0 R
+>>
+/Contents 76 0 R
+>>
 endobj
-74 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 33/exclam/quotedbl 35/.notdef 40/parenleft/parenright/asterisk 43/.notdef 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P/Q/R/S/T/U/V/W 88/.notdef 89/Y 90/.notdef 95/underscore 96/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y 122/.notdef 123/braceleft 124/.notdef 125/braceright 126/.notdef]
->> endobj
-23 0 obj <<
-/Length1 1140
-/Length2 5257
-/Length3 532
-/Length 5984      
-/Filter /FlateDecode
+80 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 83 0 R
+/Font 84 0 R
 >>
-stream
-xÚí“w<Ûý·À©jµ£¶"bÕ¨ª½·Ú;"‚HÄÖRµWÚ› V©ÒªYjS»ö*Š¥6Uô¦ýÝßóô>÷Ï{ÿº¯›ü“÷ùœï9ïœÏùr±ë
-Ê; í¡*H7OA°X¨¨m 		¸¸ÑP;O8ÒMÉÎ*
-KIò^0 ˆ0,!-*%-†M*"Q~h8ÌÉÈ«È÷+éPEÃ!vn at m;O'([bç
-4DBàPO?! ¼«+Ðà×@¨í
-u€Á@8Äh…ÁÝ-Az¶€Ñ_„½oÐߥ¤$ û¿	[ò…±eþ@0ýiþ¢@ìÄ6uúŁ øˆ•pù±® Vñ7‚±n Vùb5P ¶/úÄöõø±“óü±^ VÃûÄjøü"ؾ~¿ñ¿/–‚Ò÷¡ ¨PPD\ø×ßÞø/‰/4êæùûÅ®ç¿ÙŽ]f(Ô
-ÌL"!2¡ÎiuáeÊ…#åü¸
-°·	:µm[HC¦q]Ÿ÷kºó/Ö˜žWdҐ¯¬³ù\0yD7?ÒTùöÄ=!}âjÝÛv=Ó¿Éô SÛo
-uë4d›¢©nüè«8®îØ⇲d³¢®œ½îí=^%£/Dóì8ï-¼_¿Ï
-•¸cª’éú "¬†[”Ý€2ݽ,R,bÁ‡2ùþÂpH sqýí¹}d³õy!q~Ò•åÑæØ}ºì		+·¡‰)§I„«“]L¬Úm1¶Ø¸¬†Æ‹óÊlÜˆhwBºÛ¸lv’„r=dz‰þeÆG¯s…‚çÇÃ>ø¬ÞjbA‡TÂ, j%[8ðҐ¯,å÷Ør‡¼Â'‡Ô±&=kSå÷Ê?¦2Œ¶k ¼#äw¶-
-h2Sï}·‰e©¯þ¨Ï _mï2ŸÎ­“G'YݦîîvÐê§:{J~“ÛU@èˆz'^ô¼¹½“®y^)ñ-èC0òpU^’¦Ï5†>Ÿ–ó^§üy&!|㝔أ«è6ê<‘µ§N°/}õ`ûšÇqpmDRý-Ç«heýNir!ÅÅ*ƒ*ÌÆç¨|gOŠÊdõ{
-vÑ5+âNâòâ~ïpØdVºWFõ-Ñ…ˆ8ÑÒ™3²Y¶G*/³t{bj†~>ÒQÀጊÎ&ñ
-DsÅî¹U7Úög>øüCð^øÈÔ›î¼~Óµ0Lê´Ñ=öÃü7\fmÍÉþùµ¾»Q¦ùèä
-éÙ{ë_Úӏ‚»ƒ-|e«]ÝódÓWð®FmÝO°ü­…Öف”SÅÑWÁ§:¶{©¾Õª›b´êѝƒ ³V*–¾¸Gí—xi=y¹52LGÖQdmÙorØ{jOÃMC_ý˜^OG~SÕ%Á°8Dqð+õI—‚hêË#Û«ÄÏn‹ Ì6‚µ¯©¤þ˜\Vë¿Â¡ €Ù“£íé#?
-¤º)ÛºxKkÂP»ÖÉ_@µpžgÅpN‘~KjÅÞ†øßL!\ñ3&£OežÉnqíxÄãØî2²f±ãAUß?šŠ€Óíb¨F2ôñ¾ê&Ãu³bËûº¤
-L=ùš³ªOsOI衏4¾à¶ˆ˜ùjé&÷ø$›2×­Ve
-Áð-ûr+ß=N>:¹Ö¨Pïy·X0Ä‘VVÙìÙËNKKí€iP´Cô4³-ÁÄ~M)ú‡!~äü0W»w{m$&»fòÓMbŽ~ßCž71>V÷‰£Ì­øNi‰—^#µXí/³7rü»5¶
-ù´èt™=çZW€<×©Þ³ÍÞÙ¤ŠYmYΈ³J(¢%öt¶G¢´6†Ÿ^ø#R•OIhvH\•¥6Ló#¤m%4§ƒÑ7‰hø,¤´w¸›l/´eE=AÇàU%°Ë9 ·¼0B´’‰Ú;šXlp$´è ÀÓD%-ÁoPpûu&[HÈvlh¢`û:½i“Yr[¶‹Úã÷N½÷“Žp-£¬-`2ìÂÚŠi©fJUŸ•ÛÙu Ö´6¨#û"²Íæ^ìÿPÖi%Ì]áãuˆ™ä­ì‚ù˜-ŒË¢ï–dø[FS´·ÞŒ6üb;l_%;5
-	½e+h¤†ë*©ºÔÔM¬Mí²–eÛÏsHˆ[JšMe¿Â÷Š_c|»‡!oÔê&?גݤ™èc:©â<ÎMoÁYÞ=ìy7ülèåh$§ˆQŠ…Ò뼧ˆÂñ„À‚\.1ÀÍ°&ò¨Þœ‚g:Éûq±2ÆEñü‡ä^–,ns”@›ï,R†:“|[ÄÕÿ$×n£ÓâëvêAÙåèç×"<IxÒ{ñ„v¾›ñŒìKâóùZÀ‰Ì‹¾:õõ„ó¯q½¹˜–[¿ÇïíŠÖòð…‹>;>|/Ôü2ð6ïTˆM¸éJÇë]ݬvå“𬘶XŠüDb±
-)%Õ1ZºÞãgÅÃCë2P.F¾£Ò»§Õ„ÕÏòíoi—
-
-H”_Dy]Ì ïF†\öGÖUÏgÕ>©Û•l8áë[܈퓕{„É*NXäFÑáÝ0ÝqPaÌÍ+¾yWœØ÷éá)œ½*òÊ×7¼ï	{©á¸À"‰ݹDë)Fd/L6Ë_o·x1AmØ_D,~±HõïKyòRQ,ûXGëêŠ轶A®n™ì:Ãó*Ýôó†ùU–Z<XÓþZÅõ¼·JÝÊCN>`é.íúJPˆÈd½6ûDJ¤kÃùu´J&l'"Üjº=›	Z;j\/Pˆ’\ë)ã–bLþò‰Cj’=Ê¢ ê
-æ¢ù9붤ÙÑ“k`Üά:G–M„ÐÇŸ”9›‚±ævXççDзܹ0¦§”¼~ŒMYÜL¸Ú2¤‚äùEo6/óνëy_ñúŽán¬‰z)œ‡UÞF{¢s>=hÓ-Î*äA°(.Fìå {-Ñêz„a|$©‘¡‡ësÍ™+n®eŽC½‰Ÿ›%GaïºÝWæÍË3Æo¿“Sâ+õ1em(G†µådÜ?Cá8‘Ýî»)D2¯$5bÕ|}ȼM3…ž%ôÒ4é´…I’>” K,ã8HèÑ{ç6#D£KŸRµÿmK­aâ‚ŒB$,˘®|œÔŒ˜Ö…‚íSúSà8¼]œG{ep‚Eô폱X©áqT²TŸwÉÊÐ_æªxùW[½MŽ¡‰Ðà {xõ<pÕ'(¹æM!ݏeÐXôÝ:Vn¿VÌêþh¤;!Og…ånQw5›ª½Ñ¬§­ÛH‡Rä$Ž¦Y`¥ÈŽ
-Í8 ¹ùÁW&¡L‘l3PéõÒ‰õªsÛôÚ¾…x§¥H(͏é×ìV¥‰ùõþJù‚T|lÞ	ëVAQo©Î¥@«ïüq6|ž»
-
-t0¥5Äœš™|{JBÛÐLHî„ߣúÁ™SþÑž×ÊÃttÉîÑëÓ”…Ê›øùÝ‘)>zä+œq*Ø6ÚÈ—(yëËv‹y;
-¼'~ÆŸäç–V8HåÞÔì}N9-5úô.
-.{¤Ý%=߃ökËmq]¡ٍÄlƒlßïîCÔA‚𬌝è¬Ö
-’R-¿Nâ’O\ïM´_²RFï>Ñi#–ØË
-4^0‹*üJê~ÿÃV(n--hï—~>K¯ašòê'£U5»È*ï z4Ćm’žéÑ	4³y60Žq˜û_¬”<Vz)u÷m±ü	@l›C1å’|/Á*}P@þõý¹k(£5ÝZOô±ÀúX`[î¹ÇÊgz¾îÑÆxYŒ«³‰£µ(ñ¶°<¤/wؘÙçû£™ª]-°õ]3oÖ’=H¨Æ˜?g´Ì­gŸ‰tnPë?ÛŒ¹Þ¤ë $OÁi­e€ÙƒÓôF7ªŸï*ìÅ\‹9<ks¬	®”ýÞÈ™ž{Dkè©ç•%œØzk¡
-j<õ
-Xm=ÿÙ}X6$Ö¤˜ŠÅÑHhœRËåóŽ1]L›ðãí ÕÇç.:ªùû¤³
-*‰T˜7»ó{ÆÙ)ì8I„&ËLÙÆZ;ž(MÛv=Gº>e‡±$p¦@1aMô¤ëäŒûRˁï°ç.¡ú軋:edA…znçãsãÇYé[Þt•„gSîD‹\ƒ‚ë$>y+2`.Ñ›0³RSÑð	·S×'f8Ï|ÏlÂ$™ˆžÓÒ“2öøF-,ÑŽ¨ÎŠú-]¡F™¶n+Bg”|6ˆŠØ]pgèšL&gI֏¶/Õ³êH¢è¿ézÁÙöè¥yƒ»Ð‚ã>@]­}ÍO§$æ[9®ÇDA€Ýʍäõ¨'̪絰F͸’ÏPþª÷¹Ôò*äøÁê[…‡÷|IKŠÆ,•PF²7ûµ;”Ul"ÅÌÕÂCã;à¥7V£R…ÿ‡Àÿø?Q-µC{"vhÀ+/Contents 81 0 R
+>>
 endobj
-24 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 76 0 R
-/FirstChar 12
-/LastChar 121
-/Widths 77 0 R
-/BaseFont /VVCEAL+CMR8
-/FontDescriptor 22 0 R
->> endobj
-22 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /VVCEAL+CMR8
-/ItalicAngle 0
-/StemV 76
-/XHeight 431
-/FontBBox [-36 -250 1070 750]
-/Flags 4
-/CharSet (/fi/comma/period/E/P/T/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/y)
-/FontFile 23 0 R
->> endobj
-77 0 obj
-[590 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295 0 295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 723 0 0 0 0 0 0 0 0 0 0 723 0 0 0 767 0 0 0 0 0 0 0 0 0 0 0 0 531 590 472 590 472 325 531 590 295 0 561 295 885 590 531 590 0 414 419 413 590 561 767 0 561 ]
+85 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 88 0 R
+/Font 89 0 R
+>>
+/Contents 86 0 R
+>>
 endobj
-76 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 12/fi 13/.notdef 44/comma 45/.notdef 46/period 47/.notdef 69/E 70/.notdef 80/P 81/.notdef 84/T 85/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w 120/.notdef 121/y 122/.notdef]
->> endobj
-20 0 obj <<
-/Length1 786
-/Length2 1538
-/Length3 532
-/Length 2113      
-/Filter /FlateDecode
+90 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /ImageB /Text]
+/ExtGState 93 0 R
+/Font 94 0 R
 >>
-stream
-xÚíRk<TëN(Š(•K{•M$fãZ9Æ=·Á´Ij7fÆ̬aÍ3Ò$—]Ø~Ĩ„:¤‹Ê%—íR¤Æe¶\cÒD(Õ¨D†ØC§³Ïi<ûÓþw}yŸÿÿyŸ÷YÏû×ÙŠó1´%ÑAG:Ä4D¡­-b–~ £©$9WžÑ†ÏpÐNH„”s&Åd=ɾ-—úIÏ,å.÷…t]·þm¿@cpÒPmF]ÁÆ&Š]Ó'ô´Î]wÓ ²éV'B+™›3þ<ÒG£ëôžšíCÖâœF܃XõSÕÖÎá)¦¹XgÜxÕ(;~¨çÊU‚a‰qÚæÊ0~ßç±H­Zg8]Þã\çùP¿òaÃ"²ViÇ£åÖ“Ç7¦p;Ny›
-ôZÇ•x¶{|â
-âýˁò!K•(ß$’öÅLQ²YÄÛkà»IÆi$õƒO
-8ÉsQßq@}Ȧo¢í§š¸,vp=6-ß.ñ¸QÄÖka·»ÎPPm%~ËÉÓ*j+š²6P<U¨{"ß ­ÒG.ª_^fòØìi§fÊò—½IãÈ@CTDòÿ|®†+ª40FPÿàfözïÕ[6°®v­Cˍ.¦®ViÙµ;}GÎVAcïaOáN=ÌX†"׏ô7_½.ö;>œ-Ú@ѧÊ_Ž½wÀ0>ÓÆ÷gÑ«×Á&äÔ|!?=Ô«˜>ÔàÏÝ–Yí¹EsôÍ°PX¥ã÷㊽%ÎSøÁâ
-An"Œþí[UìÛ=fº#mB0ƤŒx©Õ=ñÔ®u*oŸú(yÆQúâË·õW*÷ÌšŸ‡÷œ—­Ê«¯BTÇ\Ôÿ¸ÿø[© fÒi˜‚øy„endstream
+/Contents 91 0 R
+>>
 endobj
-21 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 78 0 R
-/FirstChar 49
-/LastChar 52
-/Widths 79 0 R
-/BaseFont /DZUJME+CMR6
-/FontDescriptor 19 0 R
->> endobj
-19 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /DZUJME+CMR6
-/ItalicAngle 0
-/StemV 83
-/XHeight 431
-/FontBBox [-20 -250 1193 750]
-/Flags 4
-/CharSet (/one/two/three/four)
-/FontFile 20 0 R
->> endobj
-79 0 obj
-[611 611 611 611 ]
+95 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 98 0 R
+/Font 99 0 R
+>>
+/Contents 96 0 R
+>>
 endobj
-78 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 49/one/two/three/four 53/.notdef]
->> endobj
-17 0 obj <<
-/Length1 786
-/Length2 1532
-/Length3 532
-/Length 2110      
-/Filter /FlateDecode
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+24 0 R
+31 0 R
+38 0 R
+43 0 R
+48 0 R
+53 0 R
+58 0 R
+63 0 R
+68 0 R
+75 0 R
+80 0 R
+85 0 R
+90 0 R
+95 0 R
+] /Count 15
 >>
-stream
-xÚíR{<”駓¥¡¡hsr{]&†˜KÆDZFM·mã2fÞa43ï3̐ûµÚ¬\"µ)‘\Rf”°³‹
-eÑ…Ö%Š$5­E©šÎÐéì9íŸçüu>çyÿy¾¿ß÷ù>ß÷ûüÆ^{¬	t($B¾5Æã-Ø_vI|*‹I#pBY €þTbF™BîÅäÓÂ-h4£ *¾Ï»€/®råÐ :“£œ@åñ¨"˜b.Äb-P¨ð‹²á@|Å@IÀ€x°¥Ç´µP\*.c@ñ£¡?0FÃxà¿0°-uì—Äa
-Ò(¾ëvµZãÓœä±ðòwëNåÏšKKJ’.WÊ^ymO«­-YÓS,[cÓZä$‘~“”X܆´Í(w
-”\ݯ“ó¬jͶœØèfÒ¹_‡åJ÷7„ók­ÄEÚ¾—ד°Æœ¿ÊýÝõtšáüàݵña©±ßœõV™§>e&ô¤P~bÛ÷šºeE…aúo87¶H/ùõmõ™³Õ¬.~â~£œìb+©Ö¨*Ý"´¨aÉö9xUŽÎägfØφ§W$RŠvÅ«¿öü±ï0úÒ{Mõáê­´]½áûyðR~Ž]¦¨ª4‚e«Yè-ÓÔ(¹oïIø1\yUófvŸf¶1š§ýö4wµÉñ[D¥C¯Ëo«šºæü f.Må[P¶©üRÂ]„éË‹‹Óȶ•Æd³Óú|ÆD=æã˜Å6úŠó^/>¶8äJw. Š’	}‹¤G§Æ†;$b™ÞÅ>lÓŒ`'Û`è¸{gΉc¶V£‡‹¼A"êíá¢ûô“Õ*­Õxä³Â“úœç8O
-ç'pፒ˜¯ç½È·¯ÙgJë¿2”E­3–Yw¡üºþäúÃéM¾p?”¶§YÈíÛæ—÷,,Ròß‘ÓL|·iôYo}œA¾vˆø]·OàZ¿È×u4ŽìÓ|œh¾°øØ9h•×\eKQÇä@YŒ¹¾ºxm²y᣻auӍ­—cÅAßzÿ¶±ZŒ Œh­(ˆ
-Ôùþ{µ,ò&ú?\°ÿüOÐX •Ç‡ØTÞAØßÐ)\³endstream
 endobj
-18 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 80 0 R
-/FirstChar 49
-/LastChar 52
-/Widths 81 0 R
-/BaseFont /ONLMXB+CMR7
-/FontDescriptor 16 0 R
->> endobj
-16 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /ONLMXB+CMR7
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+22 0 obj
+<</R7
+7 0 R>>
+endobj
+23 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R11
+11 0 R/R9
+9 0 R/R21
+21 0 R/R19
+19 0 R/R17
+17 0 R>>
+endobj
+29 0 obj
+<</R7
+7 0 R>>
+endobj
+30 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R28
+28 0 R>>
+endobj
+36 0 obj
+<</R7
+7 0 R>>
+endobj
+37 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R35
+35 0 R/R28
+28 0 R/R21
+21 0 R/R19
+19 0 R/R17
+17 0 R>>
+endobj
+41 0 obj
+<</R7
+7 0 R>>
+endobj
+42 0 obj
+<</R15
+15 0 R/R28
+28 0 R>>
+endobj
+46 0 obj
+<</R7
+7 0 R>>
+endobj
+47 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R35
+35 0 R/R28
+28 0 R>>
+endobj
+51 0 obj
+<</R7
+7 0 R>>
+endobj
+52 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R35
+35 0 R/R28
+28 0 R>>
+endobj
+56 0 obj
+<</R7
+7 0 R>>
+endobj
+57 0 obj
+<</R15
+15 0 R/R28
+28 0 R>>
+endobj
+61 0 obj
+<</R7
+7 0 R>>
+endobj
+62 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R35
+35 0 R/R28
+28 0 R>>
+endobj
+66 0 obj
+<</R7
+7 0 R>>
+endobj
+67 0 obj
+<</R15
+15 0 R/R35
+35 0 R/R28
+28 0 R>>
+endobj
+73 0 obj
+<</R7
+7 0 R>>
+endobj
+74 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R72
+72 0 R/R28
+28 0 R>>
+endobj
+78 0 obj
+<</R7
+7 0 R>>
+endobj
+79 0 obj
+<</R15
+15 0 R/R13
+13 0 R/R35
+35 0 R/R28
+28 0 R/R21
+21 0 R/R19
+19 0 R/R17
+17 0 R>>
+endobj
+83 0 obj
+<</R7
+7 0 R>>
+endobj
+84 0 obj
+<</R15
+15 0 R/R72
+72 0 R>>
+endobj
+88 0 obj
+<</R7
+7 0 R>>
+endobj
+89 0 obj
+<</R15
+15 0 R/R72
+72 0 R>>
+endobj
+93 0 obj
+<</R7
+7 0 R>>
+endobj
+94 0 obj
+<</R15
+15 0 R/R72
+72 0 R>>
+endobj
+98 0 obj
+<</R7
+7 0 R>>
+endobj
+99 0 obj
+<</R15
+15 0 R/R35
+35 0 R/R28
+28 0 R>>
+endobj
+100 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 101 0 R>>stream
+xœ­YXTgÖ¾ãÈÜ«±2Þ+yì&3¿Ô ªïpóÃ:V°é…êìxˆ•"={t~k»Ñc‡“†	¤+´{uM`†#êz
+c¦7…WUëµyZì+ͺÓuûæÝ
+Ç Úv˜]òãH&b™.NwˆˆNܾ#ææo³ÍgNeÔT
+T{hB!VëÂ*µ–ÄDˉJ…ÏÄF¼}”–Gžig¬ÊØOˆä£šGÔÃ
+¶jÝ‘ÊèÏ G^†¼ñ·¶xÃ+‘4é/‘µÀ%hR1æHúU^‹9Ñ¿žcp-?³VŒvtLfS
+4ÚR–ë$Å`Ðk*TZ
+Ä0åt(8ïâÉA]4ÀAu£À“áÐ^#ãKéÌt­&CÁí|l››¤ÕdSÙå2þ ]íÏÉi}5›Õþà›u¾BpÏÁ9TÖ9‡&¥¹4ƒŠ2wŒ3‹Ž?çCwŠ;ÆuÌfK![®TBR*·ÉÁ»iã¡1`‡±=ž‚]±š†'¡Ñôï‘1y(E²F–Šß2‹€ùoÜ…£#hî3Hto"~× Ó%€ª˜Ðe8àõf4ÖÄÛµ…WY¿¸€JnÙHo ùè>[wø`Ýa`.Ÿ™‚­pï…Ó<¼­¡²#hÁÀ¬ëžßæô%ø?~X$ýwŸí¶-*Z&}|þ%z.e+¶É:}_iË.í]5ÔÀaKÎ,*4‹~­AF4¯‹+Bg³À`tU´A…ÒDnðýΰxñU?E{M´’>®Mt?ûþ ÌßÄý¿‹˜‹­{ëL2=
+dñPbC¢"B™÷á=RÅ7.Þú⫶©ëMdéaf4õvŽI„ºŸxWŒñÃY$1㈑|óÑGûôŐVÌ%)c!œ‰,‰®©+6T6{7¬_8mýPÓ³¯ã«¯Û¢m×ÕÂh‡=„îÛiu~“Ô:áMhw5:Û•Wtè¹E£,š-A½uãé÷#¿ÁoÉð‹ß´‰WÒ¨ÿ‚Ø„ÝpÉ3#è„gªP)‹*,Y¾'AS`èfg ­mʯo;mF
+»ºüÐæ*qǐ.?ŽÇGÎÃs	‚ì^öÃ}úq~À4Y*—ØËGs“PšÄÒÑX	5ëJ°Œ©’„ («ÎÓ¯Ïg|„/EJók;ðâü‹;6Òýhî5'=ìÞ—Ù:Ðè8•&:	˜ãSYUA}}`ë<Ÿ%®	œô*êFcÙ¯ºoüãtò*ì^Öœ¼] ÂºöHô4ïJãéÏ(Íe§ÂÓŠm}q•,§ ¢v0waDd¨&`G¸,5)2Ę‘9lKH«ª˜G.\mŽo¯5íjÊ,ôô¹2]IL\aRI^yvEiR½gô6…»çÖএfü¢El3yUm—%îˆõ_Fځ…^æhǸ+½-¸ñŽYlç÷5Ò[áAWô§ÇBa£iîÐßå½åôdÿ1œ=Êz	Ê^4ªÖ–`Ž€’ OC4ÜÄO+·n¨ˆüÅ“o6Ò{È­gMÊ›ñ0ŸÙèë1{ºÏ‰¯c8U¡&#˜DH‹•a[:Òò3µÚòrN§]Yù>·ý#Q`úÀ_>?´3©@æ_ï™ã–ÃH¯®Í_Rxr`cuëÔ-sR ŽÓ¦ä°0…Y.ûúeº’9•29E©òªu‡„d}¼–¬õ-	©‰’Õ‡Õ*>O`^ç.#$BÝß,æ·¢Lö·Fw:lsŒ÷a4èÉoüPgéËW“c|=˜Š2‘R5¡#ÄÔMÒ «9Ï¿«¶‘Æ¡Hô‚E4T@IŸ§«0÷Qw%~gQÄ{x¤ìi"û¸òÚ¸Æ|‡%·ñÿåw„ë½ÏKáBY´ô¢%%Ѝ~»}ˆáZËÀ£Õ«ÕçcÅN`®•Þ¬Í‚|â*RÒRøƆÃfH=œð(ñ+ÛØs›Ö•“ó‹ûí'¶%Å€ÂÍü;fkҧݨ<åý³laԏ|`r!§X†æÑ-™Ÿä­Y§˜>d૧ïëå޲崴wÇÒ”exsc—mÙÔpúç“ð÷[ׂ’éߺ¢€z§c#‰+úOÓ±i³S	éÖ\þªúÔ.¡µ¤}#8‹bF3¢/ Ubä ô–·Íøm´"\¢™4d”’‰ú×Ѹ¦Kµ—Îq'Â×ÑA^ÞKàA)™³Dìi‹°¢Þ/¬¯¼XHló#´ÿÅC\|š« zizUízí1]%1¼–j/Uf¶È¤?dð»ÙúpcH`ThX¨)Ì\[e¬9Âç7±ÖúxuØ9ôÙ¹õ¤ö—Ñ3Þ–ÅÌ+‹=ÁI»‹ÇÎ\Cï›ð—,N«+o†‚º™FäÐ,jªB9÷Pñã;f²HÓåX‹}qeD]òÔF%È!’!Iôƒ„aœG ¤Uÿ¯çÐJäAƒ¢]2¾’&ZRT–‘OT©œ´/(ö/Âö%÷üÊy¾'FQBQõù×¹j¡`³H¹<aVWÁªéëú—SÉgqaB1®“R´Àõ®b„ѳT–bƒ)7òÍ¢r>AÌOEwØ܊ҽ絯'°U'DÍšüHˆµR)çØâî¨^QH$^gWÝeD>‚4kÕ‘¿.NÎB†¢0
+ÇÈ6+A—^…‘›‘÷ÒÖ’äÑu(¬Môâ¼íA%¬F—žzȸt:/çìá6Q8C°*BȨ¼R— œ¡\“'‡DˆNHJMÃCq[>’þ]ùo ¶¨vÂÍõ+ùNŸûøêжµk§Œ!WÕjOéŒPuš:á*oˆ¯£Â+‚ÁE#©IcŠ%¿)@ž8çÚŽDõʍ0Þ×´€¼"X³QAl)w3”¨ó3ùAÙ1ö8Ýv,2¤û—W×[à¡„õZáúCP *@ÖøgÛÌ}ª+[K/´£óÛì˜LU!”‚.3³ˆ±˜æ_E„ÎOgÑ䐓sôð
+­™SûÀð#È¡÷h²"!â““	åÎã#¶èÒÿ³Ķƒº¡¥Ø˜•’›IvAždÎ'F¬kÙÛ»»–½´lÏÚ÷«ZX™E¼VЊ$vçîÝ+«ÍM­ÅíB¶ÂÔA]ÙZ¯Kb7ªs!ž91]±r¶íìR„µT–纮×,UÇÃvpÖ†
+H¼ZM»ãÌÚ:;‚ÚyÍ–Õ«Ôہü£ZgÖV}hSW
+`ŠÒ§B1˜êÎ|^ç™#oÙ”#/Œ'IIÙ*ì·wjëLdoÑì´D«‹¬RîàôO«à®¾×øßÚÿ÷Æ‚ŽóJ¸ëïòz‡|åÿì-[nà‡w­(_œGå·l¤Ñ\¾7‹.þƒ?ª¢µÚœ¢švFº#²¸mÓƒ^-£F=Á’ٮαñ2=.a‘;MpªÍ/i9þqN%쇦°J¯jwýpoµc°Ëö@/'aoYÑœ`$í¡Œ¤³»ø4e!NÙ/â_†┝؛×"¬(ƒÔ"I°ÜBœ¿hþ¤i)T©„8£;ÝmñT>Q“¡Î"2¶ó$Twgqˆ]uîÂ'À>¦…¶XÖé€íy¹F¯Éý¿¸ú
+d¤x#çÎ[}Š>¹'³3
+ÑL>Ó½×™eù£å¯/eŒ—ÑÜ"´Â$FîüötÄ~WßØа°ÒÐ&CQ^±‘:­VŒ”ióW¬”%%TLZ¦23ÿÖ—¨'gñÏXoüe­Aôä¤ÝÆi,I.®÷GÖh5 q€æíFóP_Ô¿Pb=“­Ô+’'-ÆÒUÜFÜ-	‹IÝgçãÞc«Ó¸ïeyÀdeè³eÿðtO߆ô,\“£Þ됕#êkÿ)J¥BêòXÙ÷#Oà)€½+n¿Lv²$a)IÂâV«Õ$,ùp›³L¡Ðh@ÙjÁõëˆ>Ñêñ*;%Y9yBì+(äxR”ÊĨ9²'qÙjúe“x!ºóBŒÖeÿÙµñª—1çmÄü²g6³PH“Ÿ’+OP&'«8ü׿ÍKO$Ž[m'ÏMÉ/ÊÈËÓ7F™:lM¢–[(ç–˜wE—Yø*ý+ß/¶~7³Ä
+a^˜ûø€Eé³á}˜›1©uÎÞ÷.G„cð¥qß·õ2¯Áuûàˬ'¬ªŠýN~Â)8çsŽ•£7®äVAœ-™·æÀ
+¢§‹åËwŒ]äy7‘Žfó>R‰Ð/Ĩ½c+פj"ÔiªIÓ@2#í”˳¡”Û'¹Ù¼x¼(x›ëÜÒS¾²Æt³	v3M¡†àˆ€„m-E"ÔçÁƒg7W\{Û(@ø*™^Ü0¢>3Yh|±¬ê1‘SŒ’ŽdýøRcuÁØmÌI«x¦V.^æW‘P!˜ýnÀ™ž,n#£Ÿ{®Š•-5>d\èXPBn'ýŸ=Øþw™@FāfÞÍ`Ú¯.¸d#ý¡ÍdQùT	iÞÜva:9BÌOíšN^nï>¥¥Ì#ø-uYñ)*aÔǧ;ý¬PÕ›X%A*¾‡UWâQ·ï‰À!›[Ö‡žl1£˜{6ÒŸ	඲荙O1µÅ5ÞׇChƒ¢!(Ô÷âƒÂ,Ufš†ÈFº,:esôð€­ÙÎÆT½š`ŠI†Ôx>HBK-ÊÖé³2¸ü’æc7àTm͉-ñÖyÂ&Fú±ÔŽnžÞa[I#[s48™ÉJ«*+ãªü|Ó¶Ú_M¼5óì;$hñJm,8÷j2Áé$åBºøa·ì!½<.»o#íD¶è[I£,Ô¯épe›ÂÏÄíð+»‚N+ŠcÛá+Ò>¯Õ?½_r+š+åöåÔ•š#Š£âƒR<—sÿš˜®>d
+  A&L6yÝæXWÎÝ%Ò
+æ2¸ÿ7£P÷3­m'+8Üï6¶BàÙØf8Bûj76×Ú]Ø Á¯Ô¥  cleføžòjñö…¼l¸|ŸÖ|í÷v'¯ìpÆ6taÌçÌËùÿmœyª6+Sa‹ÒNz›Ò¨	Òý9̦¬ñØËE6º63÷ ˜“ý[˜C>ŠÊ¥fû“<½Ûrª²1=¤†óT§D at 4DÄ—¥ÿf0#¥Aþ*pö“Ž‘$ê?~ÿ7ÚGa%½¥V©(r9,§(ï í­kó݁…%ë‡ü׃y|£í/¥»TñÕ\²:,üaGVœ)U%,bäÚ‰%–Ë}yà‹ÜH©åR”ñɱ9;J‚¤,~s¦ID"ö>ÿ讘_',zi3©#¹÷Qûþßý±Éw×ÚUÛ¼”é\póÚÌP`Æbf¦þͽÿäSG\/,ñ­èÇ7Û>=X\¼*ZX7)´á5)ªD2õ&1˜¦ûï7Ç„kJQp¾»ÐæžÞàzvŸnèÕÔ۫×C¯Þõ¿¸È?»
+endstream
+endobj
+101 0 obj
+7650
+endobj
+102 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 103 0 R>>stream
+xœW	TWÖ®¢é®·”BŒÕ¸ïŠ‰	.1FÜ%*—nِ}—­ûÒ Í¾
+("´•n\"ÍhÔ,ÆD'‰ë¨‰3Ñh¢£·Èc&ÿ+ÐŒ'™sþÿü§çÐÕ·ß»Ëw¿û]–±µaX–åÜ–Ìñžüºüï(i+½f#
+V+Ûè;Ñyvp°ó
+ùÎ+ü#üãüýº/wÙº=Ò?ÜyI˜Ÿx(Ã0cf‡nœæ·Õ“{x@ÄæÈÀíï-ˆ
+ŠÖ.Š	ñ]=ÁeòëoLyó-שӦ3ÌPf3—Æx2îÌrƃ™ÇŒd¼˜ùÌ{Ìf%³YżɌeV3‹of	3‡Ϭa–2nÌTƁéËôcú3¯03€È82NÌ«Ì f,ÍcË$3?°‹Ø›¾6i6Oë'll#•ï(o««ŒªÜ.;ÍçOöÐö(¶{Å®±ç¬žWíçÚgÿ¨×š^&‡ͽ™Þ•}Ä>;ûöí›Ó÷©§ÃoŠå:¬èb•V³ÒúŽiBú.ÝÎ]fz,Éé|昺°ìðì,Ø|¬FµÇp ¾†Zo嶃?„ç‚Á×ŽѤ:O\”4ª&Ã8Mð즆ã9r[Š'-J’¨rèP‚U²3³¨@×#«öâáG߉Û’ÍïŠz´Q‘™;”îœüÔäK
+Wkø
+öÒ§ûn䐹Ú~áSÄ,‘ÔÿÙ€s²3š¥ÍìA´Çyh§6c¡$RãõúäL1=fëüIÀ“!€ãœÉÁ8ÐxF—©×ëuzuvvR„óÚýq»MK]'\þJâáNx‘×~œ„£pr#òF‘¦Qý±œÆf¬µ²8{ãßð5Å¡Ž9‚æiçƒ!É›Ãi×îÞÿqêEÒ«PÃë÷^‡cü=׫dŠHV’ϬÅÜcÓÌ5î~n¤‡šŒ!7<>ö¨$ÌúŁÓ	§vøÍæõ†ôª™m¤• ½BªÇ0MzH&×)ÃÈ+CóÖÊ°ê+s±A¯ËRÓâ ŠßØ»§¦¹¼µ%À2×…(ü	/Ž˜­¹L~íŠð
+¯®A…õŽFr;X>ÞbÅŠã,GGœfQt¬ÂZA«Š"c6Í$sä ÐrFu¿Èw–Ú‚û´ªwSµãDO¬@N+™úÇvý“Û¿d]¾~ïJ&íg¯cÄÓüë
+€…ãÛNC9-¹xê›/ÛB›“‹Ô
+uy•†ìLJ>I|TYÌž=eU¦ºØ&­Æ7*6Jô­ó+ô¦aŠï½ã\äk	TÇÅÄn†+oߏuëÀcŠú4ñ¾þ2iõæÍË)–N¼pÊ)”Øãííç}ìÁ/0þ…ÔKš%T1!Ci	bVvJzfvXŦ|Ú!d,C±ÏöÆLu}¦9#§-ÿŽDy/®x&fTës‏‚ìH5á¸H/7 ¢ZÜSudóG°œNaßt:¾Í½Kí»?0eÑ¢âeÅpœÿô.˜P‘ïns’
+ xäÖª_P¬ÜÐÿ…eG¾?7D.ÛOª—ûé/ÿ/–ýµtñgÅYÕì/ô®^Èhn%ÃÑK«Òö=:›ßr4rC®G~u¹õôe±]»š[¼>¯¥4ÊNM‘A-µýŒÃåžQ`D‡BhÙÒèçèïßØrÈÜØ"’¹de¥3/áì"H{áBΖHã¸n2ã_
+ŸJK§2onÖú¥3ßÍÚ}JÄûñølS¹QŸ‡>«»׬bÎtÎþ­ÙÒ8rkÜ9Éâ·è¨èð£ó_£TÑ$UiQ"[p‡­ó§Q]5<†ýð	ü®R·È8éÎUŽ~]àZHlhßÑxk‰|Ú:3†ÑÓpoÇ@m­ª+ÎÊ:øÂVÐÁ
+z+÷æœ#C¼ˆ]¦«¶)¶~_ƒé`Uú®¸bÑ\XG9Œÿ¢Åšz#G^'ol 
+ä£/~ó¡¥µZ½	4?‹m*SÔ˜Ò Q½8* –'ìia‚klÐû¾æ£? ÓøÓNYÈl=÷‘t¦(¤@iº€i¸¾´¸°à®\ïeYë!fB¸œÝ¨ÓïIåõ\§ùJ‰7ŸÊùw¦ù+ö¥0/IØ
+ÝŠŽ[”`ïù$¶#×ΊãoÍ+_ã`õ’(þÿ¨iÙk'ÏP³}æeÛÿÕ€{YÉ=y‚Ų¬òûø~¶p•U•UÕm«N¥–‡îÓ›T¸žð=ì¹6&ÈW½ÓG8püä.ý®þÖʈMê`Ÿµ©A06O¬¡•±ÕÛ1i¦ŽžVö×Fé7Á¸ËSnÂ5´*+hUæ@D-܁D=è²ÒÔäíÎdž¬üѪ
+ÒM¤ËC0Œí2ºÉµ†îdˆýúVU¨n…QŒï‚ÚMÓþÅçÇåÊmG[̘_s$­#ºujóã»ÞVÁÎ<cï õĹ÷ØlWà§8W¸GÚ'=—Éfé¡™m¥Â/Q–Îeø•p0ƒ¤T écÇIÆLÉÁ„‡"}Ù&ADi´)|w|`2|	
+N–=üÊXCךs	e®T}L‡¥@RCB¢£·¦F+ÎmÏ3¯õ]·™«Ü|5jB¢SÓ(Æ:ÅIS_¤éð!±ß›øŠ¥™ýmp	Q`Þ¤ã	†ù¬‡!„‰Z»ßGm-,o„}|Khƒ¯64T;éÑJºüLûî‡G†ÿH&Õ‹wê?9ßñWÜÎ5±æ9}Í¡ø=
+ªŽÖ¦î_k--_@>ðwÁ#$$kEݶÀm:]²>ZŸ¥ËȆtÈâãò¡Z|‘UªžåU¿‘YÑ'¬c¥ÙªÝú¼ðX$$‹äAç2¥? *ÂÊÄóÒÎ~xõ4­céb"…	äß#½„}q‚ùgT–ÐS™£&â‰R…°G=U£utWú¼¥±êäJ™;¡$Y¯ƒÌTq]üû)^á>Åk+Ó
+Ù†là“!5NMZ©rK©.2äˆ%eÍ­·h²aÂÛn0ŒôÞ´¸ìã@u{éášæmõ›B¶Ä®ò+öĉîbt˜z›Þè³#H£~áóGh··™=†`ÎÁðIî¹½ÕXÚ}Jy¿9».Ü?+>¶òõ‘M{Ì•­g7~2”ô%3g’²ù@Ê1úÑyìeÒ3z¼µQD–œAøGY‰f¸
+…<ön?yæ!Ì5f{žîdm;91^òêl–î…E`+endstream
+endobj
+103 0 obj
+4070
+endobj
+104 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 105 0 R>>stream
+xœµV{PSW¿×@îUQ[ÝÛjËÞÛŽ£VTt«XmpD°¢´¨¼%ò’B*Ï@ò% ¯<xðQ*(VQQ¶µ¶Çmݾ·îZ۵ݞÐãL÷ÄGÛÝÙþ³3;™drgÎ9ßw~ïwiÊe
+EÓ´Ø?8Ô{¹óß|dz´Ã}Šã÷"À±“‡'£\ÁMn.Gܧ·ÏFéO¢³Ð’'(MoܲË_&ÏV$%$*=ø/ôð^½z•‡oªD‘´'Vê«L”¤Æ*ÉCŠÇvÙž$‰2{‰‡oJŠG¨sGºG¨$]¢ÈÄ?(í/K•«”…G°,^¢Rõ”¯T&Q$¤+“TûRb³R/Yæ½|ý*Šúµ•z•ÚHm§6Q;¨0*z
+¢‚)?j'BÍ fQOR³©9”'5—zšÜŽb( gÒJúý)kDž¢+.Oº$¸Œ»¦»öˆ}†9Ϻ±^ìöÇ©)Ó^šVý½1ŽšùÓ”[.ØQŒÝ±ÁJ;žžâJj+Ô m©&Kîÿm®:N–¶EÇJ™K‚8mZÖÎÄê6òTcí š7Åç°·ñ+a¾¿z~l¬.<„Ç~cåNP€®“ù}ÛDå79–[éÎ	Ô9!rD£dqïa»-öijñï¾y‰Ñ´;_£Ù<NÆQÜ^ˆjÉtáôÀ¥®Žã'Ž@/ËnïŠ„ ؉œ!Û™%g•>/RÉ-ÈÿA¡Â1‘cÊåš`ù6ì6žÅ+žÇOà¹ÿX„Dhú+FoáLÈû3sü+Á±6vî2ØèKW‘ÿÕÞ!Ò1Ú̝Léƒ`¿xûí…=ûº…Þ¾“`„rçW›_¢É‡<V]} Ád66™Õ‰¯ÇïËUó©Í‰µ"ïM¯„Ù[] ÈÍ–B<l;¢0i"߈L€×ٍ·CÑ,4ýîÙZ‹.níâÃÛv‹Emɯ.°€
++«ëØ»ùÜ
+ø¶Ùýí‚ÅÞYmö3˜¯Ì†¸ýr!KššŸl;FÜ~CL†Þž6¡©®
+Þör…?¾º.b©ó–>T¾Õ±ÒL@Ù"ô¡c
+gc~a–ª ˆOiM©Ø,ž‘°yG$ö$
+ݲÃEƒçòjK[3͹µ*±1ŠÝ+6ïîùFÅ—˜A¯ÓkËK Ø<Ðd؝ÉMµQ¯·5òÆJ0Ô7ôDC#°ßŸ¹9œÜ]P%$tÉ+6L­ð«ƒQ¶Ë6ø¢+–¤x}a%”[F³ðv"ÞgìÈÇJßGîM"´Ö1ŸCžv쉂TbWÂËJÙ̏qƒEוg/{¿ ÚÁøKcãà«Fžœ2ë¾S<lšs‡FôeòsÜçÚ2šeiªyjKVK—¹­‰Ç<á¤Ì•ªb¢”Ö_”rŠ¸ªFàðŸ—{‡óÐÛÅgû{]pøq•À¬ŒÚ°~µæäYý…ÁžN
+N@ér/b :“[Òú¼E@é†Ãv{sC‘0H¨vµ3…•Cr8‹¸\t¶.îFé}Dú"t™9Й@e—‡M¦«£'ô6=i,S›©á 4‰Ö¨;X+£¹ÓɉBrH&ëCœëß‹Ö&GS±×\ƒ¶¼˜ø¥ôå…ùoD‡EçÅ8S¨‡¤Ðq2p
+pÚ‰NzYI=ÔAC¥©º¶Þv¨¿¥«#±=¡=¡QE,†Â¹sWÁ´ƒ¤—F»^ƒlCz7áD´ô‡Ë§D'cÿ#~| vkN¼úFXSÐÿ-Šþ—Ð"zÂa6´žøÕß*B¯—pc½ñÒ,UšÜ¢ê¬¯©4VðeezâÖ+BÉŒ`q°¸½ùÒ•¶´yœ?wYÄ,»AÞØ€/†Ÿ€2[[}wG–EV ])oygxp؏ÏlXºr—oèGá×tíœO“F§u§[Î_z¸	Ñã¨nÑÄÀï;"¹&^É'‰wOWÉ€}n™y	xâK¯ïFß<Ú"T½v:³ØOkï"
+c_4{á+endstream
+endobj
+105 0 obj
+2508
+endobj
+106 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 107 0 R>>stream
+xœ­VyTSW@ÞS,m_ÅѾdf\kE™C«¥X­ZDÔº+¨´œ¾çáÕ/š#öŽñ>ìýÀ§Eì#V‹¿f♿±¾lÓ”˜)ÃSESg?¢—Ü¡üyÚB¥9…=r¯çÔè+Š¡ôå
+pÊØ·þ¹1‰E)Àª‡©ê¡z¡YÏ:™Ý¦ÒN°AµÉb²ºÐ"T'¾ˆW[
+AºYÊxÈåUL›i:À	ƒ[¶
+ºY\'ôsÈëƒËÅ~èwT‰C²Ó­£¨mT$„¡½šð¦1°+šÀ
+vÏ-Å|QvZ;q©K$<‰
+9³Lp}óÿ!x>~?õÍâ‡È»ïaceèK
+úBŸ½>:u;ÄC|³²/}.ÀÛ¬±Ž«Ds?îì…÷àô&#ö&5¼4A
+4¢÷œ4òE—?¡è:‡‚ĈûúÖ7ß,½ƒgJð•øýC+;ÉÄÁºq‰¸ˆD:Àm‰¬+‚~‰5s¨é2YzùûdwhȲ¸—±Ÿ„4“ %…©þ~1ï‰Ð3¨ˆ»÷æ—7*+
+å•<d—ª²ê‹ëlM•G;ÓR×ì
+M)–-ÆìψâŽ_=Mðlƒ!hõ+$ÅIä©„ÔÒ-'PÑ	º,¬äc™Î`È/äËuû‹Ëui]±Æ}ÀbQbddàƒœ¶2É»MºFmMaS6$³²¬˜¥AéWîhùòZ0–+‹œô鏄—®ˆÜ4Úŝ¬°\æL–>” €çr#«jgþn*J–l`°~jú\üüUTKž•|‹|n.Â’zÞDl[
+ì!09$¨˜™l¶°”Þy9âÄj˜…×à¥x1NÀ2ô,^‚Ö~þiÛ¹Éá„£
+°¤!Ç$9Äɼ­h ¿s!Þ!B‹……’:±…kÅú¹)ËõlÞ?p“رºÎ_çÏi£˜uÊ=²ÌĆ¯x¿G”»Åño7zú&ý€øt©0Æ5ië5Ù¹ZM¶#÷HS½ã§àHâÞ‘ªß0ú‰¨fxŽxÝ¢·žbf‹yN÷’fúô+³ôA!I$ÌFw¹ê&{ïy¡)× 6äBì…×MdÒ´èkAûA_öÑl‡?öE®²WæYÍÇ n\áq &O‡lÏŽ“жt4oŒò·æ‰”«Áh²Ö±ŽðNÊ¢™WнF‘Ѝ´þ}Ðògwìi=¥àÓt—á8+ø3ý‡à}rt¦~96¶A¦ç艼úƒç"z>bÑS7Ьïxá	fdÈÚF–kô2r5ÉHgùg°[íáî£}TžýêmAï¤]·Q 	þ´€[újôU„í’Š7,3°õÍ5íÍûê¬ÜüÌ—/m¾ùɵ‘[6‰±’ôÚÅ
+!†£&«¹þ‰H”ÖêÕ ƒ= #Åš™O<ÆþÉ1nßîq»,qoä~=@:~=@ZHàõMŒãñ)49í(ÏÞpíS;Ý{	%¸>'ÆC6®ÀqYÏkÇ⦻jkø†×ÚõÖš#UG[ríÓ0Ê%ï¾ã8ìàÙ¸`IñÛÚ’¨ŒWR´¯‚œ]ýe¶ëìPǹ&Þw4±ØFWí§’íVf³²¤ †ûømÍ\Px\ô«IݧÛk\ç;ùÖ³æNáMä=c2èÇÅïÑ¿;ã÷ß¾ëwï‰ÑòqáÍ-Ž(X	›óYÃ}1žú?CþWcs²kÍüsäý®WmØÅã’ÿÏÊßücùd'¬?ó2~p0mWÛv¿•vfMÌý_Ϗۛ”!1íàˆk*j{.ŽXêmÿWŽÄ;IWY鱶ói’¢z¢;A¸°¼…Þ¤Q°]„‚ܾœ©È¨ƒ}ðŠ:2)A§Ó—ƒŽÕ™uæÊ« ¯&ýõíÙ¹ù*U}~Sõá
+{5‰YÏ Šé£ÍÈ,BU(†ëÃæ8Æ/Ïî^cÇM6¤¨ãøjÆ9ÕåËOõÖ*¦M±œ6ÍU3í1Šú/S\!
+endstream
+endobj
+107 0 obj
+2471
+endobj
+108 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 109 0 R>>stream
+xœ…VXTÕ>Ã0ç‰P™F at mÌÄG*^³‡¾®ˆš/@	„‰!ä退‰(3³ÎŒ‚ *¢"£òP b©yíVZ™~Y}š½LËËÍ»mú¼û@jfÝûíoæÌœ³Î^{­õÿÿZ
+ÆÕ…Q(ÜÔ9AáãäŸþÒ …4ØEzR	$t°«ÐµXîJpwmì1ÓÍýq^_׏Q*3B–MMJÎL‹5š|‡Oá;nâÄ	¾¯$R㢣}çD™Œ†„(ý³ÒwaRtœÁ”9Æ÷••+}Èo¬ò]`XeHM7Äô:Ÿš”œf2¤úÎIŠ1¤&23ø•Ä褘¹É†ÔUÆ3Mqi‹fů^•‘æçþÃaæ1Ó˜W™éÌXf>3ƒYÈ,bf1Ï1ÙÅL0ÊŒgF2!L83‡	b–0s™ç&Ä<ICf8&›¹©˜§Øë2Ò¥C9GyÄu ë)ÕDÕ×ì&ön$·‰»Êá÷‰èSìæçÖþØòÇ~qv¿ü¸æ®bÝbÆã®ÒÌ€ˆÃD)¸RÑܵ[)%vjrv­ƒ,H‚‚܍™DèþÑ;ïMsîdàÓõìᨭÂÛ°ßÌ‹œ%Ê{‰ èÚñq:Ø3d˜êjf¿­Ð_A#5É‘ï¥x
+²¤NE2X».Ù_ÉnoŸŒuz"KW$²^êÇEžÛ#œ± N[öXyq8T\mûGƒ#}²–TÏxÔ ”ûyñAÿQ¡ÂS´êKÈpdJ®Jϝ-‚9ËyÜUÜÌä5I}›ð	ÂþJì–Fi2×XÒaÿZcÆîºzGËUÂÎ'3_!á‰Ï÷ÏàüÛ^ä‹Ê×ÂúL«%;_›²,#x¢ô?ò6à+K“ó„—ú"&ãçØ!ååMÍÇ«€ÿí¹Ä“øM^«‡Ž]N°ƒÿœÓPÍåZ‡Ö7#ÿõ5êÐ'à{2tJèÊL“N}£íAn
+ºnᏤgéû†ìÃz1{C)­ ¨*Ýuy/i×½îÝ>ƒ¦,0p(éOþ4Çã³­w¶mÏ€ü,Kþš<]ú²ñÁÔÂÏŠ>Çtû\m…Ǿ]MM¥µ€}ÀF¼#õ¥¸\!S§ŸZtRúzxQÔwq*w¾=~ÒZ­™k ‘_Q¿º¶¶ÞÑtbqmØôè%!&­ú0ª8òÂïèAƒiÛŽÀ8N³ìàTœ4¨Þó@KÔ\G¿d±(j^/
+Þ
+"ö;Øqñ@â¢ÍZáM!ßüNØ\­ûŒÛÅ™ȈѦ”£O c€xEW&Wf隌ò.­åÕםy³_8e,¤ù¥|ܺN›_žk_y&Qp°a{‘
+Þrh)Z޲ێćJàëpà°ÖՍÆ=º˜Úø—Ëø{2ò3hí{У%?KdÀmŸoHÓZñ;öw$Qßìnÿ5ùßrC3"‡Éq¦ŠXçÄ:Ñýq0nÀ‘¾8ú›v/õt⯬C7ÇÛ^ž»ž'u8*]ƒüÞcïÁ?ùÛÄåKòª¶»ŸÌë„ѳNû-™ûpKοHC¨ãÔí؇-‡CPWo„‚Y°ô|Ü¡´³£ÿ)ûº¢ŠªRºu}¶U—¯OLK€y°áB~‹ekî‡ÖÍkÏ/ª‹¬ÏjÎ䈱Œ%7ÑóŽ–F␥m^ê7»üNhê’Ϥ_eoépùg"g4RÖ͇1°˜²‡ãÔ"õžcJy3>/ÆÃøÚ¥g#Of_€o+ä‘Q¢©+XóP\€õt’j¥CÒKÃoA¹ŒUõ´zœ·G;=ë±Ï$쏁²œ¥Kn—4+aù¿µGÙÊRØY
+Ùº¹”A5O™v}Ú{dÄâQðܽifoÆ6³M»§°^(þbcÔd]%ó43)Ú@ž8
+ûe~ø™ØÜR¥ÍÂqšg¸Qc³Sã!ƒÏ–·Ûµ¿+¿¢J:£ÄѪÁ>8 ¬¼°è¹†FK˜5Ra‰-IÎr9”ZJ7䁥 `ÂhïÈ©šD6Åb‰‡xˆ°½A.p”’!Ä‹øgeÄÂ2ð¡½Çvœ¦NY*i¸ÌŒÍ…E[t7Q.d€*FÏîÞµíƒz8lÙGm¦ÉÕ?¶øáñ1ª÷ã¥nûËòZÛÙ†ªÕ“þ|„ü¿¥\gxóЀ°%ËS´«¿k7@ ,ˆˆáÕWþdàt­¹Êä:ºXQ±s°«IùK‡D4…Û[½Òæ€
+¤ÉV£%0b)
+¹8
+µ9dJ÷Bo2]ŠPý @£!’ÊñK`¤W¹f?2˜üüWOq㯊Â5÷QXXAR¨7u‡>t—÷ÀNÀ€óyÞ¿‰JÜܥЀÍV6þ`l}ddl|-¢m½öx7c_%Xà³ì6{%‚LÒ´#ïéckcc«öþ,ß)~‚êNy$ÁÙèõ”,¿ìð”c'þÛYFùàQH£82-Ïj¥L´øVÝ}‹ûòƒßÖ:ò³«µYyÉYÍÇÔ¦8÷×Ö4íq!ýÈÐÒGë?E‘tÊ$ê¡ 7(®È®—\=6iv}4”œ­]A[Ia1F8X²¼ˆݐ}Lëæ:¡Ò½OS‘»;²{ÜÜ=æ¿[ôý
+endstream
+endobj
+109 0 obj
+2974
+endobj
+110 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 111 0 R>>stream
+xœcd`ab`dddwö
+Ž44+endstream
+endobj
+111 0 obj
+237
+endobj
+112 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 113 0 R>>stream
+xœYXT׶>ÃÀ™cWðPï9¤Xb‹=Š&cA±¢ H:ÌÐÛÌ:Òa†:EŒ]±bÔ$c}1ÑÅhcbî:¹›÷½·‡Afrã-|Û³ÏÞ{­õ¯õÿk#¢,-(‘H$Yìæî>}šá×qÂh‘0ÆBø›8Ç
+ûþpµBƒÅh°eó‡kaЈӆSb‘ÈyÅæÅ¡»c¥þ¾~¿í0}Þ¼wœ‚}¤þ;¼Bܼ"ü|‚½"È Èam蟈ةNAAko„;¬ñ	÷‘Fùì4î½84xwd„ÔÁ-t§4„¢¨e+œbCv¸-
+ݹqåâÝ>-	Ûµj©Ôwµs¸ßš#ü×.‹pw‰
+\äµ>&ØÛcÂÛ'¿>卩ïÌŸ?ý½ò™³fÏywî¼mŽ5…zƒÚD}D-¡¦RoR«¨¥”#õõµšr¦¦Qc©5Ô‡Ôtjµ–ZFÍ ÆSî”5“š@­£\©YÔÛÔzj95›šHyP+¨9ÔʍZD½Km¤VR‹©¹Ô+
+®Gå|{|—i$¦÷µòÝ5Òøû¡è(ΧKzüMú{¢F!@zá›r@®
+B!(¥øà!=;9Š@銤ôôd”À7 Jî9]UG¶ŒF¾|íoV0‡®}ÓÊ7šlU‡ªøçtej.ÍØ“˜Ç§çD"bðb!œýj…íh²%ŽÑ	ût¢#ÄÂ"f›éòz²Z8Šçñ+ivõšÞoa
+oà?r“‘)í‘B:/Aâ)‘*¯•2õ±UÒÝq±a^ûvt<;vŹ\¯õÐ¥s×Y?Õƒ»ÞÖæspF²­¨|·ˆŽ—’¥Pwm3`&]Fl‘’lƒ¥´Í±g·œ>[ú‡£wJzç5æM1Ÿ'£ÙpdÁ2Oÿ˜þé:ø\'º¥‡ðn±°D¬6¥Ç'+¢Ó¸ô„˜-Nˆ™³øúw'µ ÑšQ
+¯ò«–×!¦NSÙtëMä‰~„ÇÌă¿ÖÀïû©’7ó¦šu¢ëPß)†#‚›è›’Â(éä3¡D‘Ÿ\'ErĬ5úYƒZù¹$0ªÏ‰÷¾B¼¦’o½ŠÝs
+#J}òÒòSKÒJP)*+,,ËÉÿòKÎ2ªž0ú•/Ë%­ÔÒ,% \K{£LyJc<a”<uÖßéA¦ßL<.À,‚aASãàè2‘‹†u¡ìÕš£gPskå},æp-#Ç­'°hì‘Ó6/v›ÅCIƒÕåî»úÍ׫y\ÂbˆŽþ¦y‘禝«fñýþ¾ ‡z½Xð… ²ãÔŸ±%¶œ:À6?L°øáG°æ°žÍ:¹Ýyòݵk7n^u6Õm¡“q	w|¦+õ~=䓳Ëà§X_$?ÈÝ¢+ꉹaHÎ{
+ùtKúÿ?hmÓÑà]±}4MšŒmððGï<Üؤå!Ðr‰d­çÜ÷—|t£ûÇë×®_íXëΙR=†œxñ‘Æ„û7Ñ«Auü8I~Úæ&kìëjú<þ¦)‰44LÀ—¬ðr©¤ÿo0È´’–Óý[=é„(›5ÂM6q¯,g7b>4­Tß#—šF¿›-!„ªhXÑ“UêW¡l@öÍ%9x!¿^Ò?ãuS–Ö÷„*
+&é„Bè >»,b„»lªŽÍHNËà™H‘ 
+ÐnUo •ƒ%A…]ñr ?á5`¾í~´7%¥D Ÿö¶c¸7b¦Íþ&ÂÛ~ï¾|~«cŸ—ߌ˜6¤Q"‡¥:xÇ;c¢Bw¡’½tñì•ÛÍš´Ôué{~Orxœå!¯#)­ˆÑÓÀ†ÍøéõÍž±Aþ¼ÍÓ&E™ÏŸ¢Ú£ýWe6BnÌe©¿	Õ7ÄÂXËjªQ;Ð˯áA“Æãaxè/〻ê
+ 65+&Ü°.%-DOÅ˨.³e·.¿ŽH6H‹Þbú}ש‡F‚?¸ÈÂá(-vÃnQ»ñ|X³Ü`EM#æ°7.dg"©&ñTâiô+ò%`Õ‰í1ƒ¬&VŠÍ¢p»7ìµäèî‚[jÅùp»›¼֐x[ŽíÍŽï'‚ÅgÇÛk5<ÜdÝù&Üm¢Ø5›æÍsr½þèñuý—wŽ½ïÒ_Ôaɝú§ĐOH†šÑÆÐôÝOQ3—Y´³M][¡½<ÅÏë,nýxcý6@õÜ5Ž–ÊN¯©utyCÍŽ3¦¬ÐA–ND¥ Tì
+CæÖ£'Oœa	#L¯7÷ȃÍüÆš¦¹åïôGœ×¯ßî<‰$‹qñHlë…«­þ˜~ì?žêX³5þ%£}M]-±éH°•x£ø¶}¨¦š{Ò÷8ޛö°
+ëé¹ÏÜ-Io¡ê`vNÚŒaŠœØÚ)¬d¿¿ô#áTá•Ñõˆ©QW4ªÏÝ°<v…;o£ßg\
+[˜JÄ=ÜåhA™Éd,îU±—ÁéÂùË°õ²uÓÅ|qõM[›¿'–°ë¼Nœ½pôè™s‡·¬_³m›?ݏÍQˆè@Ìã[7»›Sšâ´¼¦¤.·T•¿»6mb*kKšjcZÖ%mRúoåã‹ýª·"fÊ’…s¶W”Çð6˜JŠO‰…üʤE‰NžèC”ÄÌ~±FÂÈ]ß´ÇžÚÐÈ%xÕLGÌR:% ÔlJG‰eIeJ5ÊF¹Ùe¹{„¯°ã9ZUÔÚªæë+ŠÐ-Ätƒš½máöñ½Xç57ÏÒù˜gË+Qu~ôþ¤>µ4v_ZéѪª¶¢{ùçЧè8ó×.mEªb.?áìøìÌÂÄbTA’c$¬féé(Z›|.å4úCèó='KÏר£n¤+v-Ú@ÌZ‡°O´<R¶ù]J¹R˜$Z‹b2TY9}R!Àð=×Ã01|+U{	×á{V¡%U}FëW'ì&0¯Ï½„.ê•bá8Κd¬”ü…È{äÿF	þ:ÐÈ}û¼oý@.z/½š¤w<L#$“~|tÕæMž«§ñ‹ipd?i¯Ö¡CÌ·ÜÇ9¼ÔœI	÷þÌé´Í©»t5jF­¡5Q(y!W\X¬ß‡˜+uŸh%š‚•|ªbW\(:~ö
+*L©å›"4òb#ÍÀLÕ‰衁8gø°uµ½*‡¤ð Sj¦±å¦-ëãøP0¦|ùëݶ+˜ªä³ãòúb	|o0£2’üeœ_óŽr/ÌÁoáÑدø
+Ûà‡›kÕ|$Š6BЈ›Ït¿ªE†R4ƒ Tj(åsÍJùÜûtý›7ËT½â,zÒg¾·nß;Ò]…4~ʨ8N鶆Ø̼ÎÔó/ëܽgÖàóÌ™Dà	t	£Xc{ìò[á.<ÄÛ'M•ì
+ÚæAa©¬	
+Œ
+­‰Ôjkj´ÜK–¶>s
+*®ù\3,ލ¬6ý«h4‹ñؾjAè¦ÜÆœWcæae•²RY؇Zl×Ûšü²Ö"î`°.þ*-sóa÷UßÉ¥¼÷ÁÝïU16¿8Vy•ø´¡ö§;NÞ€åS‚ò¹œÈâtõKoÛS'#.8•ón[WâI¼-^¸`βã._…ó¹Ê§eYæš\DÀèGâìB`hÞc™Eº{b?ðüóÓÿ
+‘Qà‡£Ìô㟞Ò/ÕuW#ÿheUT…sq
+÷_!®ýI6Ý11pÚÛÊAí_³Ñ“ôá·Ú£mçúPù“Ý`Ûû‚eìgÐý(‚×z¦Ð(ù„ùíö	"}pJÌ–e«r0ڈʨˆÈ¸~B‡`ì~|•³„__	£¢jЃ½ìOº»WÔÔÑt at jj+^ãj:@G|“”̸fÓ=úËÛ„Ÿß1^Gô†p iù ¾Öƒ¨¶;zH25â¯æ—ø"û³fRO;¸xx¬w=ów¾o–e^5ëg{ðγgÃ0C¤35ऱNT!$‰…­?ZápKÔ1N^¬EÕ|½Ÿ¶RÒ™
+	ÇÅ^É*öCÉ„ß’"³Òv`.3šôìpÚªÃxׁbú_× fþ2î΍ȑDöQNQ•®þ¡ª,§†QÑyíx at njI\*Aí(§"·†ùgŒ|úg¤÷rÙk¬Ùø¾Yh_ëÏÐéºg:ëóúíÝàF²&J°hek‚N* FÛ×}z%çå¤ò$¹±îküÖö±hQ°&¾®\[Ô®âP¡J¥Î.S•¢"ÄüÏ™ %¼Í	¼4Û8i”ó×çí]-'¸$"6ß•d‹Úëç‰Rãæ½ïãŽoÛal®¡n§j×GU‚Ì¿ýš¾¸Œ5†EƒÚø÷ñ¥„õ1¤m7\µeV¦´OìíÚþ2s?©“=•{|*P²oDÕ¨¨½©¢FÁß+^^“ñß°n<Ì*4ò%V˜öØa®ÄÏv ÃÇиŠ„±¬¢9Å"&Ðdî’øFõmñЈø(äËÇ›ŽîC'ՖŹrX.‰y)KîüiÒœ’!Q# g{'ìådûB«P 
+–‡G2Fhh+ÜÓ@>ÙÙú‡û?ˆ!D¸Êæœð/L å;$)g[)Þf§’åDiQ=Ê«RU2°¶ÿûs^Ø#Äp·‹mnô‘íjk=PßÒb8Ù\ÍjÑEa²Xðüc[P¡B¨©’UFG¦ÉÒ9üÕÿ:§Å+Jµ-S×”—æs&ƒ‹iÁò¯;¬ê±dÖùÄÈRÓ³äi(¾×û5?žËO‚[}|ÃBýC+ý:ú¥­è”>&1\@­¶Ø[Žï½«[ùÛ‚X>ƒQ@*Š.dßs%G˜+[d+:ûÚÍìˆ
+íþ¨vëwy*ˆáÛ¹_{cn/úKðज़êåjƒ=eé{²r¸––9ñÙ)_Ï`™ßîH>0LªðU¬É”!ÂØüj‰ÜqúçÓËV¯\»bÚŽ÷‹O„ñyyùHÍÔŨ¥‘²ÀOW)jûÍã'7¶\riî»D¤tÂ+?—ínÑÁlÒ*v¯×ƒÒ`54ö¬Ú–æi(i¦›t\C¤¥ò¸Z‹"Z«róör­‡ª."ÆæÅýc‹\ç/ùèÝÐå…çC‰‰…ÄĦˆŠ(YpÊι_/Kñó#ÿòþOx 1‘¡½æ}ñÈ»=zÿ3¾cËàõïï?DûPER^ùJG±LxUtC½º²¹Ã÷ÜD’å£ðìÉÙ¼ÀÉ`¹ègýô5zf7¶ððˆóöäÀb]ÑÎŽh"_™O¾síTEÊE%*°ïº|êî]æ4ÛeÍâÞsh„vè¨þ©'C§c'¼ÂïFØ‚‘£€¶ÊÊâ&.Úa
+,Ò]RWeg£2ÆàRòèôŠXƒBôG‘1¼W_ÓTÝׁC¶¶DéÝ
+7Îî½¾-‡v‘Û±Î3'¿¸{a³Ç·m‹ø/‚Ø/u Ìý9wñ <øÝŽkŽoü"Œ³ùuaÔòUGM|2“”PëÇŸÞq½ä¤áàVv®K§^wñÊw/¬Xéì²v.oÜt^´—ê=º!á®ÄoA›Œ‡¿7a ¾ª¨ŠÜ¼¼|TÉÔŪäÑqÁUK`$¡èad‡MħŽÅúÉX<n.q2ýpXœ9Syè‡ßÊe×zûÁÎ›G´Ñ|C@É”ŽJÊ@¹ñ(…q_·f®ÁúÉ/ilò¿d1ôŸI_²ü+%PŒ×Ñ8¶@¢¨Ä
+´Œ
+<@7x°~ðŠú+´?
+endstream
+endobj
+113 0 obj
+6149
+endobj
+114 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 115 0 R>>stream
+xœ­WTSWº>áHÎQµÞ3ƒÞp¨C­Õj¡/Tª¥ˆÚŠ‚µ<äž	ïWx¿“ðˆÂÂ#bˆ¨UEKm©vlít°h{.­ãmµ3ãc‡»Õ»TÚÕÛéÜ»Ö]‡µVöÞÿ¿¿ÿûþÿ;"jŽ%‰ìý¶l÷¾,³ýFd{ÂÎöï4àÈ©ÛS;ìÁ‡9Ö'êCºEhÛ䵐¢E¢Moú¥¤*Òââ3]Üý<\žññyÎe½\šž™ì²%23^*Ì$ÿÈ\‚R¢¤™Š.ëe2—íÂŽ—íÒiz¶4Fˆì—"OÍÊ”¦»lI‰‘¦'SåªHŽN‰I•n‹}}cz\F|f‚ÖŽì¤Yd®<Ê멾µ›ÚF½B½Nm¤Þ 6Q+©W©g¨eTåOí ^£vR”L­¡B¨@jµ…Ú@½Im¥ü(GʉZ@¹Prj)¹<ÅP
+"G‘\tÑn»Ýgôô>ÏIœsÕ~ƒx±ø4óSÆ\fìæ®›{xÞŽùôüõóßs¨v|ÉqØñ¾“£ÓJ'ë‚ÀïDQž”Ówv+ߧð“íS‹ÈðgÚ¶
+}Áõ¾7Ô`©a-L¼J
+‘ „`H®e™~us>dBeuEU±®rÆ,j©h
+Ô-é1×tñ&\µ² Þ‚$aÃihV·IÑ*ü_Îá®òMÏo‰NÓ­‡~֔ݒ•“Y$‹8;výă†:žd³ÕŸ‹m¡I„æN"ù$mËCg¸ÿŽ-u÷Ë(æ«¿ã'Kì™û*vKp+^›ùDæhí0ôA?£*’øæb8&A¯1÷®œ<{¶eO ¿´Òé;Ñ%oªÔŒÞè0‹¬×Qü-Ú6ÇæÊ¥”)3¡˜MíÈ1
+íç^x
+KžÂ4žßuG!W+š×ØXªŠªêR_‘òâr`·¬:Ü‘Ûű‰úw at a%çÛ-^Gη¹šD×ѱë´M…8´È
+QØ;»a
+/‹x CÜýÛh‹ñn'D³¬éo«NÂ(„ÌGÖ##pŽ¦wÇ÷EÖì„hSïH‰LWD+Pä¤D‡e„BD÷d¥ª:	#ð~ýÛÝÖž¡c¦SpNd„|[ÐïL¶'Ì"DO"óuµâ5ÜL=|˜‘]§Ê÷‹#»Û䮋–}‹cÞ(
+Ù%9Ç`¡®Ÿj+#%¥?[-_[×}xtèC`/_‹E˜ñó~>>¬e4IRÜ5ÐÁÎ2Úˆ¼§±Ö] mÏ \®k/t_ß}»â…žnx!浜Ôoñèƒî:UCQ‰º¢R-‰ó\£R at 8„äÇåÇá÷0ÀÖ¹zär­gÐ\¨Ã®5™$ý|,•m™ò0‹ÆïÚ”wé)ºÉ¡0¼yã`ü&~ûàP¼=‡W¢í(=‹V¡pßÇW8’µëW¨•£eWþŽ(´ô9Rjv[½T`á+&ý"RÌ›øú‚lK9ä`Á½ø˓dž[ë•Õu¼¢¬*ŠØ´Ž\c_{‡ñhdðºU;]x<Ç'ñ*žxß¡Úw¡ƉDϲç0Ôú?­'qÐþtÖ"B˯£É»4Éè<‡Ähšÿù½Û®×±›ä!Ø%¾¤)‰•<lgbÕ%/óY‰âkµø€<¸FÎÌb^Vë‡$*ÔÌ¡NfP£;Îß#_À¢ðÀvØ÷‡pïYÐÀzò&Š5ÓSþ¨‰“‰Ó°göËØŸðÑC¦Ö
+JPë7̝fù³3ꔉŸ-”»óž¨D<}0Z*Fσa[;~œ5‹“QŽýÃ/gly” í¯b‚dÇBIj˜ÐpÑ„†„ð™Q_k*•¥åÉÊz
+;{­ýÖ$SD@Äî l¾úž/ý™îòÏ`$¢Æ‘ýÈÿüå~TÒ/G城Óhý'œ¬6½@ÏÞz]ý‘ôCU=ÀÞ™øäòÁ¼ýFIs£Åp²F©ªª‚|VÑTÔÞÜVßÝV4‘÷–22ŒOoiÖ}æ—Bñ†IVzyd at T§¬+/¤0*ÂX¿¿!g´ٝú|,éHbÿºy7x+ÈA)I
+`Gð:®ý^Øùr˜ûrßãc†Öñ«ÿzºÇò^‘uUŒÑÈfóæZ¡¡¨Jùù¼ºº¬LÕ †Êº|}²>œ”ÍEæûÖ›Cɵ*Éay·òã⑲K…ð*“öô²äËïñʦjm1°ùPž+Á™|(mÚ[SÓÑÎkµú&­öXÔˆÚ(t„቏N$ÿÏï’”k‚” Ó…à0;Ðuä?Ñ­OŠ†¯)שtÀ¶‚®Cò£I!tºŸ‹ÕaAI
+¾ÝÏt•éz>lú›í«…nîhAޝ"d7‰ž0Óh« Tö@2qõÊ(¯*6å62xî
+ÅñðF¶“Ù$‹•úß[É°-w›!)r@´ w…Ørý™}‰Éi™IñýÙF«¡ßÈcO¼•tðß×WR¶ý@Ê3ÐMD‰V!µ+2ÁYÕõY¥ê*eóZg<õT6Á^Ð,é=+ë£UAP2å4ê ¦úôÖÁHkÔ`¤<N'‹OO‰òU“Ÿ†ju¤%jà,ì+K®й[gM¢ñ[›ÿF.]‡€ƒÛï21Úª€Ù3ÑWðZÌø¿~ JßÝÓjÖ+Ã5¼Á:j$ÎÙk£‚ss
+
+$^^Ê°••35…ûa´ÀÞNÉa¼v:zbfjŠ¬7Ý<ÐÛcþáŐXc§oˆÚÈÓˆd¿µmâJª«@]M($†äWH$¾ó—¡s¹½¼:¦<*ɘßÕ<Xÿö;!'Özà_íÆb	¶û‰MþŸúFhsDW)Á¿´Î&bœ²
+S¾llA)
+b©g,ó&çóóæ<×é0פup˜lup¤¨ÿqfù7
+endstream
+endobj
+115 0 obj
+3328
+endobj
+116 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 117 0 R>>stream
+xœ5P[HSa+ƒ…+68«x³Á&No­¨æîC\¾ÉÄé¶NÇ;x»‹7nõj­f[­“·sÅV#o·+~!^OR„Z ™-,J‡•6RAøN÷Ó·©Ø bˍò‰ö98Ãœh¡…rJ„•ÿ²¾¢ï,	ÄPçORA%Škò¶zoa]ãÍæ<Xi\"¼›÷-EC¡Ð³qøžFÉX6‹waEVNféóæ®'=£†®²ñ™§o!½6y<ïäå‚SEJìÅf¯×烦âùß^×èkD!ek/ÃÄÊ/äA$‰ÆТbñ•.K
+/ØTw§®(…öGAØG;56óuC’èQ*ÊX]YÕÄ	!öS0…ŸéùÌiÌà¸ìšò°Çìë¬í±µ³c/¾Á{:rÏ›îkVº}¶¶&èõ5ú`}£v³ÿ_EÉ‚Xê'D°@Š3(W!à8ñ€vw[«§‰Å?6ÊdF=;Ö£f-F¹ÿÖòŒÀåV¿,”Þ+ç©\q¯oâ~*ÑÕ»~¢"k§º(!~!—ªýLÜPÃ,t3Û+endstream
+endobj
+117 0 obj
+656
+endobj
+118 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 119 0 R>>stream
+xœ5_Hq+IÑßé¹ÑITÂútŠ±È{:Pò18QJ[o;É3D:|0ªþ׶ˆ–×c<6³Žš—qÁ‡òUVy›Ë{®ÞÛÜrz )Ê×báЛÈüôÜ;ø“D‰ióbª¨Ôi?oíêêæ{n…/Rß>ôF ¹ò2'[kÌ»fQ‹-b“·	rÝ#häqGi!D¬N
+a‹«ˆý£Aô]}UD‹JÃÕóe™þi³:âóÂ 9RÛgcÙ›¥GE‰H½[‰DEIµ6>þ¾%4Ó".âYE§¬½7žúBCî ÍG…'æüc|1ãÒš=—klêJ†åJÚ[ÛI®™kô܃Ýÿ/àQ*/\Úz4Å…AtRÅ‹¸`"‚°ÓÕpz¼”ømãŠÌ‚"zÂ
+²)»E>é›õñpÎr“ÉÛ‰lxÿ©ú+‘#TmHÄn"ɈŸ	ˆQu—\4û	>aa'• Õ;BwŠ…GŠD+endstream
+endobj
+119 0 obj
+655
+endobj
+15 0 obj
+<</BaseFont/ICLHMS+CMR10/FontDescriptor 14 0 R/Type/Font
+/FirstChar 11/LastChar 122/Widths[ 583 556 0 833 833
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 500 0 0 0 0 278 389 389 0 0 278 333 278 500
+500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 472
+0 750 708 722 764 681 653 785 750 361 514 778 625 0 750 778
+681 778 736 556 722 750 750 1028 0 750 611 0 500 0 0 0
+0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500
+556 528 392 394 389 556 528 722 528 528 444]
+/Encoding 120 0 R/Subtype/Type1>>
+endobj
+120 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+11/ff/fi
+14/ffi/ffl
+34/quotedblright
+39/quoteright
+92/quotedblleft]>>
+endobj
+13 0 obj
+<</BaseFont/UZYZOC+CMBX12/FontDescriptor 12 0 R/Type/Font
+/FirstChar 45/LastChar 120/Widths[ 375 0 0
+563 563 563 563 563 563 563 563 563 563 313 0 0 0 0 0
+0 850 800 0 0 738 0 0 0 419 0 881 0 0 0 0
+0 0 0 0 782 0 0 1162 0 0 0 0 0 0 0 0
+0 547 625 500 625 513 344 563 625 313 0 594 313 938 625 563
+625 0 459 444 438 625 594 813 594]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
+endobj
+11 0 obj
+<</BaseFont/ITYNZM+CMR12/FontDescriptor 10 0 R/Type/Font
+/FirstChar 44/LastChar 120/Widths[ 272 0 272 0
+490 490 490 0 0 0 0 490 0 0 0 0 0 0 0 0
+762 734 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 490 0 0 0 435 0 490 0 272 0 517 272 816 544 490
+0 0 381 386 381 544 0 0 517]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/GRQREI+CMR17/FontDescriptor 8 0 R/Type/Font
+/FirstChar 39/LastChar 118/Widths[ 250 0 0 0 0 0 302 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 693 0 0 0 0 0 726 0 0 471 0 0 0 0 0
+628 0 0 511 668 693 0 0 0 0 0 0 0 0 0 0
+0 459 511 0 511 406 0 0 0 250 0 0 250 772 0 459
+511 0 354 359 354 511 485]
+/Encoding 121 0 R/Subtype/Type1>>
+endobj
+121 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+39/quoteright]>>
+endobj
+72 0 obj
+<</BaseFont/FVSMAJ+CMBX10/FontDescriptor 71 0 R/Type/Font
+/FirstChar 12/LastChar 120/Widths[ 639 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 350 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0
+0 869 0 0 0 0 0 904 0 436 0 0 0 0 900 0
+0 0 863 0 800 0 0 1189 0 0 0 0 0 0 0 0
+0 559 0 511 639 527 0 0 639 319 0 607 319 958 639 575
+639 0 474 454 447 639 0 831 607]
+/Encoding 122 0 R/Subtype/Type1>>
+endobj
+122 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+12/fi]>>
+endobj
+35 0 obj
+<</BaseFont/WNYVFJ+CMSY10/FontDescriptor 34 0 R/Type/Font
+/FirstChar 15/LastChar 15/Widths[ 500]
+/Encoding 123 0 R/Subtype/Type1>>
+endobj
+123 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+15/bullet]>>
+endobj
+28 0 obj
+<</BaseFont/BNGLQK+CMTT10/FontDescriptor 27 0 R/Type/Font
+/FirstChar 33/LastChar 125/Widths[ 525 525 0 0 0 0 0 525 525 525 0 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 525 525 0 525 0 0
+0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525
+525 525 525 525 525 525 525 525 0 525 0 0 0 0 0 525
+0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 0 525 0 525]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
+endobj
+21 0 obj
+<</BaseFont/IRVDMF+CMR8/FontDescriptor 20 0 R/Type/Font
+/FirstChar 12/LastChar 121/Widths[ 590 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 295 354 295 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 502
+0 0 0 0 0 723 0 0 796 0 0 0 0 0 0 826
+723 0 0 0 767 0 0 0 0 0 0 0 0 0 0 0
+0 531 590 472 590 472 325 531 590 295 0 561 295 885 590 531
+590 0 414 419 413 590 561 767 561 561]
+/Encoding 124 0 R/Subtype/Type1>>
+endobj
+124 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+12/fi]>>
+endobj
+19 0 obj
+<</BaseFont/WTBOIB+CMR6/FontDescriptor 18 0 R/Type/Font
+/FirstChar 49/LastChar 52/Widths[ 611 611 611 611]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
+endobj
+17 0 obj
+<</BaseFont/WTBOIB+CMR7/FontDescriptor 16 0 R/Type/Font
+/FirstChar 49/LastChar 52/Widths[ 569 569 569 569]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
+endobj
+14 0 obj
+<</Type/FontDescriptor/FontName/ICLHMS+CMR10/FontBBox[-40 -250 1009 750]/Flags 4
+/Ascent 750
+/CapHeight 750
+/Descent -250
 /ItalicAngle 0
-/StemV 79
-/XHeight 431
-/FontBBox [-27 -250 1122 750]
-/Flags 4
-/CharSet (/one/two/three/four)
-/FontFile 17 0 R
->> endobj
-81 0 obj
-[569 569 569 569 ]
+/StemV 151
+/MissingWidth 333
+/CharSet(/colon/L/slash/A/y/ffl/n/ff/c/B/z/zero/o/d/Y/N/one/C/p/e/Z/quoteright/O/D/quotedblleft/two/q/f/parenleft/P/E/three/r/g/parenright/question/Q/F/four/s/h/R/five/G/quotedblright/t/i/S/H/fi/six/u/seven/j/comma/T/I/v/k/hyphen/U/J/eight/w/l/a/period/V/K/nine/x/m/b/ffi/W)/FontFile3 100 0 R>>
 endobj
-80 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 49/one/two/three/four 53/.notdef]
->> endobj
-14 0 obj <<
-/Length1 1842
-/Length2 13515
-/Length3 532
-/Length 14535     
-/Filter /FlateDecode
->>
-stream
-xÚíµeT]Ͷh‹»»$°pww‡àî.w÷àîîAƒ»÷àÁÝ=¸»^¾½ÏÙÉ9÷ç{¿^{@£­>ªæ½FÕ¬EF¤ L'dbg·³u¦c¢gâˆÈ*11˜è…áÈÈD†Îv¶¢†Î@n-†¶Î*öÿÉúÏä1Óþ莣…;@›ñ£½L?~ÿû“îÿª%fklgbak`fc::zÀ}œžbx1,lM€î-*裂êúXŸúú¨ ùú¸ÿs ÿÇû¸kþœ#®I£?ô‘ÂøÏgü°4ù?Úüÿ9ᇶÙ_øámþ~ˆÿõö0~ì“å_øádõ~HYÿ…V6ðã¾`°ý?¬ìþÂ+û¿ðŸ3ó~X9þ…ÿÌ¿ðÃÊù/ü°rù?¬\ÿÂ+·¿®‡+÷¿ðÃÊã/ü°òüþß÷¡°°»óÇ‹öññŸ®s¸Ø¹|þÇLcǏ[Áù__7×곩ÅÇ%ºá–æíŒy‚,S›BJ}Å
-&Ë ©A…Í~ÄÉÕwÏtÀ.ƃZ‘v ^¯Óx*Ï@GÚ‡Ü't{ÁwŠh÷Vü%~îï—6÷¶ïj°ŸáÙ‚¯q•!ë±gO|xŒÜÖ4{sÂ*?½>Zš¤Yø3ûbà8ORTå7ô*H¶kCOf;‡†x†µjhp9‘JšCikèšJRÄÚD ¯e(L3ÍÊ¥]»ÚSLnâ›Î=f,ªq;!‹Ò65†Òo“’ÂPäÚ÷þ¡jÁL€™²#`rFiD20=¤:ÛOLê{\,LÖõœ¶¥]ƒè•Œ]wýû®>¾y¡ÔbãEB]E4Å#ŒçÛ å+¿]:ñ+é¦ß¹7r¢s^´š•$b‹%	¶ÖÏŒÌIO&¤›,U<!_8b{¤w/Á]!ŸïNp;(O–ÂT/¾òFðÈý¼
-‡9Ø92ÒýJØŽ1‚—[Â1ôÕ›:Z
-3QJ¨²/Ó²*`Þ]dhk¨vÆë‚JÅ•ÊMBù¾þ»þIîAãl¦ø’˜y9pÔ!^†ª!Œ|ûUP%HrbHØP®®ûm
-Ô¤íü5#^ž<o%ò§\cÏ6*Úuíý9zX©&ÐåÙIªÖ³0¤çê™æ M«ÜÕAð”Žì1<ÂÎkP#ìÕ±Æâ=ø"ƒŽc¤<D´Ò ÑyÅ2I§ ‰EÏ@õ›M‰ê@ÚIhs•9*rGÊžÿ%†¤â†¶s>ãkA£‹gãïTêò¨\¼ô—œl‡æ•›d…Ö£¬Ëï®Á±ɘ±ÄH<l”&{ Ï!ÉwÍ•Pu/¸/PN”¿wû|pÂê‚âD@Å6Û1ÏŽ@v£~‡]¿ðœ/.õƒ€j‘”mÀÕÈkßá,˜ómŒu»­NE(œì©öZ5["Iû˜-§¯å%%¸ÂÈ*MÓ藺d¤ND»lÊ@Ò×_™ØRtŒM<ˆ"¯,N†<i>EUZ»7íÖ@§vÒŽ07(ºÜIâjNݱ‰ó;˜å(}•³s“¦~x»^àaˆLCvj­ŸÀüŽ.AP0˜÷˝¿Pj|à’i)#jº½ˆt?bU	µ\M·õjùª¿ä[Ö„‘lžZ܉+gÈ(Ñ%žå%l82öùÒ$&"äüÁžFkÄúXŽ?øœä\'Kö+Ï¥£Hól’‚fÀ+Æî!ÖŒñ6™î"€?=îÑ´DøÔ¢u£‚vÊE~HùΑÄé1•n+w;öG“4@êÒ¹<ô™tŒ÷‚½*=
--úµP©c“›Ú¼Žå7U^v=ÀE«æƒ²wØf@èø@V´Ë½AÿŠb˜;5mïa7Èj«ëîù`}Üêõì]é¸Á3„mPCØíŠ",íÜ7¾3*×”¾K&Eo!ÓÐý
-3\Ô®óÍèOºðXŒTÛ©g(Ÿ´7Z…\sÉ‘f ‘3a
-6†5‡¯†)ûV,´o?RåsD)›iM*:€
-lÖr´1¶‹‚•ª?6#ŸxñjŸv=@¶ÓxpkS}hà¼Ù„³“o»òÒ`a,	G Žkpyæq’ä‚Ç@©	ŒÂ‡/î·G»X×ñLZ¨cŸ^ŠB#1OñÉ¡¹ö„‡œ|zf8GÖdŠ˜Ì“‹*zûÕ]Úv–“K»¢ÀyÅi»0Bá“®¦¤ÚlR²B×ïåP¥Ù<õ©>NÑbS\ä«÷C4¤Œ[[ÉF90„×»_àá	V^*ÌÀ@H÷L–“å_2íâØ¥Ä6jtG=utœRg÷ùHÔf%Ì¥q!Ì»~´LA„)z„˜“E¼%óÅ«ÒOyáE_¢{…ÂãX›ÅqØ&Ÿ=3·¶ûN³:¨ÜÕeË8¯—•¯š²7vBâÊõE«ÇÄ `ŒC%tIÖ!‰cz«kÃ2îsqÙR((@ÆÆC’u
-¤Ձ‡XUe°˜‚/yÚžŸ™6]‹Çœiž
-«Dˆ}F¯[_§v×éýIËÐn„Îîúø•¡
-v]|™Ë,Õ-$:7WlV('ÉQêEÚãj2ï¬ÓüxÎq€..[Eˆ™7Z»Õé>çÇ—-–rmk_XÇ}Ò3Ðû9_ÔQ&ËAM÷R¥áù¨Ç™GÙNcö'“ÜpÀÈ	ŸL.ZÒÌóƒzt9¯¤ëk].ï5L]·Ÿ÷ÁGµ™×Ï\*8®<z#„Ÿ{¼"ð×5qö°IéÄäâ†m)7g-£¨x+)üa6Úa\/¶uvë‘àDJotê® ocd#¶ÐxöF÷ª£J†À66¬p´ÒŒå¬Ï)ƒYuHî
-/ÄËi]¿W“¸Œ?"ω£|ŠøìÞ÷‚^qÆœì휦÷Â:ø2í6YŒlR½)IØû^Ù ”$Õ/;ȧsG§ÄN«w×òb裷¤àÊЍ~ä5“§{Õ&ÊÉ°3Lôøó0DršÙ&ßÒ·PZÏþÎØßx7ÄëÄã>ycò‘…JÁÌø6!ìÔ¥"i• GÄÃÄ‹uÁ—À‹ž4âý¹-¢¾?ÓgÐ:½™°Ê é}F±êP~ëu²'œä•~[{Âݐ€î‹‰¶-Îë‘ËøažŒÁJײpsöÕFûš3ôjžï7t_OÔ4#Cª¼ÝØÙù0‚,œG
-ÿlAw5Úu©Z^ƒ¥|ù±ÓyŒ.>_šr!žRõM²Å	WŠ3¨†L¥ýað0jÄì?w,@Ò”9G=·Mz¯EM°˜27ðÊdÜË4ˆ…˜ðS½ëiø† ™Í¥Eª×ÊÂQ`IjõÀm¡þl³žnžbv˜Uf´48¢¿yi@ˆÁ 觎BýH&Í/'+|øØ&¼ëÉ>²èô°Ô¿í€EØw¤æ/ÓòÎ5÷='4Ç;#_ÙÆÃ(!jjÎ[¤¾ÀÖ)±Ïn pxא1cnZ8KkZ8d¿íÂÏù9¦Ë/7o#`‹%¼M„Ü»Œº£»ômÙҁ\æË´M“ÂFFôŒÛ¯7Ù¯>0ð&<ù6Õc_Yfá;NÕÏöÂvh"H¾$Ù	;VCb¤¡†™j‰¢67Œ’mµ¤Çšçâ¤ÂØÂYµ«X~X¼èÑš Ëií{=Â0ŠŽfÏ„*¦]j$;åÞ*|Kf€#é´ÃoëæáE“iôš&oIO(Ú5…’Ü
-zékÕ4P§ðkŠWHxT	8<L	vT•#:q®<ùí¯‹œ0VÊSéºé7E,ùð¯|Î?xÇÃçŠ
--‹RlѬ˔]ÄdÊùóæ–\ÙÛûŸÈ0ÖëèÆXcR¼›Ü|u½Ú-XÀ!r¦¯‘6à¬Ýãf){Tv¾ˆÂI"¨É¦%¯­æt•#Ú¶
- }­´!ÍÜö[ñüô*ÕWøK~ÆF¾ou)½9ÈĬ‚ôZ
-­#³,cNʤ.ZZN5XÜ¢™ÎÎqN««­df_æï<*OÿÑÞˆ¬Ã{[£¥Ï *‡©ouƒšßûfÃlZ²žK½G‹ôn#ov;¤Çó-;NãBlDY¦‡Ç	ß²~àP³ø”™<C*C/ŒÝzäÛîE$•Žó5"|
-ÏãFÐÃ6TÀ-§$¸ì͍ã,Wà£ì—'@ú-Ä%å6ÊÒä)í·ù´‰_¶iuÜ$$uF†í­I¾—¹vñý{,³Jµ>»|Ç‹v…]IÀl½°Ö&Å*EÔ.ždËM6¯\5 *–Ÿ{Ǻ•ëaé#„ü8¤
-ÛG¥^,%SÁnŠèI겤)‹76L‹Ð:¦ÌßÈyÈ¿›œ‘B$¥µôBÖ-’ÐYúÊP*ô7V†Ë¾T`PAªX‰YË
-áëJ¯Ôóv5JY(' §¤G}©"*üÎ֍æÒY7§ñ–3±³^M3[‹H§Ìï²áÂ)>ðµ£^¬õ˜-Ž2Ž犪O˜üᮞÁdT-/ÆmrïìE7–¢qÂzâ¦dv+»­3³çŠ¤/Ç´Õ+Žx°[ÍÃ!«4žšmGð&Ìu·	<4LHÚù¦™¢-ÈT DÔÃÅ.³(P94ýW¯ÝÏ-Åô¦TÜðx”条–³ÂsEîR N9ëW¨cY
-uýZôªh#
-Câái]s—óá<;›/çð5“ç`qY“ªm¿ÄqU±Tk>Wp	*¥ßƒ:®÷¤UûéhfJ®HPä³ä)3‚;?ˆ“vx²æȝ/ôd©<Ë-Áu újD´‹y\	ÁM’ô˜#|"&cÇôu$€l.Í%ÿ+\bAI&¤ei‰GÞ·%êbXmX1Óí
-øòvyÕÖTùä{ø¢Q3¢Lahù@úžGîvÛX-±Xˉ—"ç "b¤í­¨[ÿQ»,±¾p¡dÉÓ ~Þ±>õZb—ù#ó°çã¦AvV…C(Y=ä’¾A-(ÉöˆDÂió'‡‹kOÖ8¡µ$³aæpñ_¿•óŠOzmÍ“÷ö“Z:B¯#OYp-­	Uí&áëËÑÙ.
-ÎÃÓ`ì„]¬.æ˜åªr-×ë©Ê–0žŸ8ø¡§¼C6/‡éÁÜ¿#²]@æ³\Nk̨ªtID:¾ç,&#mé›RL‰;óÉø3Ó{6qgYÂø6¿¡æ‰|
-o]„žã1…®Pfø'+ES;jˆÞmµFp%¿¦}·m at MžÙ ÖAu‚X?ôÅÊjÌŠM­{WŽ’">Ò±ØUß^¢Ö~"ÄKeoS¹(À .¸@´ÂÝ?Ùè÷¥¸âP$±O63Aƒ2{
-÷«¨	EmB¯œIƒì©Žcu<‰­¯¼¡:+ZÄú:ŽÅø>´Öi>Žašèb©ùû,¡0EU®4#ýU*Ì$<)ÖM‘hK
-Ï‘kÍ“¬£Œ *»"ßõ´„uãþq5<¤ÕæÅ„Øå6øR¹£zÑ%˜§B½~©^‚;”*æÄw½uŽÔÈÑvˬ::NÝ`õZ—GA]4÷ñv@âRFž1]…ö‹!šŒz¿¨®É
-Yð@-çRAP~ ÂµÞ,s Zyô–qÕŽ%úâc¼X¢ûkøý2Ôóf{½ãÈdŠ‚G×m%6á¯ÈrÀI‡ìm¤3&X|m¹nÝÄK`Å=ÖFáÔ1”ò£»s7þLkí—Øb¥‡ïg=WôO¹Ð-†ë ‚‹Ë£«’ lAGÎ1m‘Úî~.JÛ½lÙ áÝI¬›Ñ–%7‰XÝu®^ÈGÑ|ÿ†íâו¼™ÛWe´ì¼5ª0`7
-àÒÖê&åq¹’ë‰ò@9-ÒÚU£Æ­»yÑ?þ‚k¿Ú8u›'“Wbqh®•¡~Ë7w<“$»k€~—}í?„Nì–Dü-þ{/Dö$,4fJ°-Ÿåq87úV3Îä;wF…FšÇ~zÍ—µ½sLFH
-AD5«€Vû„r5Ÿ.>
-¢¦'…àq¸‡Â«XI¾ó™öø¯:nNoëÙö­h †L’“„&@DOäø£ãJÝM®öe}%JžÐF½ã*@ŽÃ«TGëÒ¹’kXˆŽøìáEÿ›9Yéæœý©^	üú„ …·l•ÿðöû]½ÈÔ)¸—âòCìéZß
-,0æȃ-¸ß‰¦sâÊ;íœ3” Œ~­ýņ$y/8 at 8ª¥zf¶+¦Ä`³2àf=‘À
-gvÚDÕÆŠleM=÷±ùeäkCÉÚŽÖe¸HË=l2*k–ìÏV!¾*F®£Ø/5LãEFø&;5mÑ¡ÕbÃe,ùî}{Yài(ÃRm,âNŸ<;jˆº‡×	Hc¾W— ôhzüìnuÍ)ÒFu³qÆm¯LþzhD¬âqQˆ‚–Òš0j©â¡~Ï’BïKƒ¶ÓXúpvW%ŠqÕøu	d8ë	x5*lr8êNåõ9ߊ‹û¦ÄlW™ò¦F¶ò§‹	VÍ5›ê-üg/ÁE}os*ºjÀ2™­VW
-zV\ë¬-áÖ÷DXÌ™+ÖÏì(ë”ß5¾{¸iÇëÇýl!× Â$ÒÈ«âq³ 
-ÎÁƒ³U/Á£EWu‘zJËì³üôOJ«ÓtM°äìe¨ÑÔõëß@óZÝÅM³
-ÊD‡_]rzXyѯtV$æiH5„•¨~š¸øÛÞéMÔyøLü%pò¢Ʊ¤¢VpvDµÁD‘€´/XÎ
-L¹RO_Emðßý,ê¯ï*›M],¤&ÔxvU±©ÎUÆ!çÆöWŽ™5M)YAxŸÎ‰jU–6ž¼A°®»Òy8帎dÅIëÙ2ÝûìNŽô—	yGp6Ÿ,†(76¶¥"è»½FÍ¿.4æõ‚RÝ„Á˜”HÛlJ¯¡Ь&ÑO±t«„ k†ቨÈÇ»±'z/„D“h«"¥ZMdÁ9^šŒY²[X½BiîæQWù¿oÍw¦P†…†¸É+È™[
-\âçùÀÎá“FãRß-sqE=Ñ(Ý{ÒÖ~zè19ˆMqÝ9«¸6ê4"ä˜ëeožL´¥WÊ[à3ØÿR‹NvrqÈû<R=¶ÝøÞ)½+n|í
-*“ð…̉:÷XKÀ”ëuWy,YÜáv˜ª
-„XÐ	PË]2Ѫ3£4ÈÆd&m+Ÿ5q÷è]acJúY ìàO+A1c*GÌ>‘ÝK•Ê';ÏŸß;_<Ä{t’U"É[L`ˆ¶e†?+Ócž;&.œE¥–z¨pf=až‡ˆ.éïÏrÇÀ“Ìsš§œv–žhÕ톖A"ú˜5OHßr”gÞæ­™@Ç
-&Ís	ÐÈ«\°;®ŽÕ~Ü{§aWlwj?Óÿ%*:áö~¬pKU*DrÎ" –ž&©-yBPssfHý@Dù¸x’&èÆ9Ý«­(ÛFó3€ñÝö¹nªåE7ð×U4.ŠhÒ‡7"
-~†à¯+òËhÐ=‰[ð6m(kIÍFÝ714§ëe
-ƒy*;Ú'‘/—5m¶3£‰^DëÉúm»Õ»¥¶É8õ§7se2΃-e–ëvŒ§g:iÖ¦qˆËBÆ»›&ÍÕçë“#œììKfOLTͨ™Hv-ø3ú„ô6‡ãùug­½3S~±l-#Kð:pÏ+<š¨‘©^JQ™SSï0öå·Š'ý~Z[{ÄçñzH˜ËžÓù	£fõ;Íökj›ùÄw&ë×%Y¼°BªÞ3¿/±‘€2Ù¤¸”L"U®$Z¶Ð,HX’''ºL¸ºÖˆµ¤¯ÚÑ~|HÚ†Æj¿çhŸFÖƒ¸â£³pÂt‘¿"Úø²áL6¨üÐ]#Zi\hG7Ìkk:Ã7|êkÿù§L'1ÒVS«äKhŒwÀEñ'	ô‚t0sÝÓýçõ›õåѼcàOSK
-HÁñ阕ÓÌñ¸§LpG{ïò‚¢´4ô¹© }–VCåÑÌäÄ(©=‹MKÄ›Ï")ê“€ô§ˆ|_Y›ô¡òÀ¢é×qjJƒÜ„¾nä+2lÙ(ô“>øZmÄÉBŽÛqÚ¢Gb¥þvSLΐÍPNÇW))³¥,ÊO´„$ô…ìœí=±"ýVOm<»³´BT;ë«¿ÌDBmʤAI%Ø­-ÌÒWu_˸4ËúBÀ»âá4ë ´5¦bíÕlßô@&i‡UØp©N`6i
-3êaM.¯<h—:õ!UÈE7üu¸¡îʼê˜ó^â+3«”²•$–SKÑÆîHËùbk¢çoD DôuÏfø9Ϻmg4¾|w0³­óҐ}FÒ5Cz3Óv×Ûîôƒˆîý<„×Äk(ï^m/×:œ2bÈEúJdÿ‹hT\^Ò §gãòH`Ûk2eƒ:aÓˆ¸‰jAhL
--¯®ê%÷Jó©ý"ó<P&Uû¸«íEinB‚J.¸ë¡½ñ}r
-®ø`Ü¿ßv9Jéç[æÙÚÎÊ“ž3¸wÂáÞojñ§÷7†[GL,G«½»™q¼Å1Ç5¾\îgü£Âz»é/‡8GÕFÎÈbHNÉÂ]½†¥UµŒiþÜJkåp5züéÊÎîz¬N;Ô·lH«îG¼cœo2,'§‚z´•Ì?ØÐýõnH9©¢Ól¶ODÜ\R­Ä²#]q×%)kê•V_Y!ðŒuˆ­J´<_
-?5?w>«KA¶9¾“Lf‰«²‡¶ˆûBhD[Lþ’ßЧ¬Êó]ü
-þ%g3Ç‘ñ÷ÝÎÃoAdÉ*u6ø_„7ìü‰÷ØR;YÍÖ¹!T	ÕÏk(£ó±³È…†Ü®ÔcÁ·Ön³(<<¶Û—7å‚/	eŒúe„#£ºÄ,'ÙrCð±L*ÇÍ`#ˤší¤Ì]ØÎ}°±Õý‚#…MP;u at Y¦™ù’aZ?J`œï°¾I¨ô@zG¼e¬	¶¿v?µâ}Ú÷Z¢ ¸bûùQ–Ëô’Uê)qäEhâ](ß*z‰¤ÂwW%,Ë`!ð©QÅ×p²è„ˆ{,ۍ݇¡½ŒHCïU䧺ï 
-g$´‰Cö8‹7ì·ÅTª¬¨¶Rº¸	S}?Wâe×+^ _Ä”©¼On7#ÃfàëUÂú ÉKž¶GBÙ¿ùæù:Ñ2çV5˜õ¨YÒMîx†K	V&ä¯Ä;Nú¬ã7utÞE®’[ý?b3Ç8¦V<ÒyHfŒï)¿óqjÎG”ÄóbûÇ:'¾ç€Œvb+¾È¤ºS»U/Ï	Pþb#ÒL£Œ«xü%\ÓC°ízáSJÍ;´6Š˜’&±±9°XÆcRà5§3¾a)|?‡ßðY”„Q,œ`hÕ™BÅÏOwôÏ£q™'Ðù=öûX ŸœZ“ØžÑ×D•8tÔ\µ/
-­÷zµ‡Gãmwèà¥Õ&{¦¥üÚ¢rwMòÍÛI×+äÝ䳤0Î9ôDÂî_^ªÂÚ3^C‡\û]/Å~â®H jj¸«‘»é‹¥FöaŸe7Åu ³SXvRA}âx±_ÙT²ôIçð%MÑlÊ¡_\"‰™!W5Ôqæ•f`°äšÍ÷Õ™DV¯dò˝anŒ+YÊÔøä½KŸÛö)@ó«·	Ïè=6
-ÄAö¸AŠ×ý·w1ƒå{E«w‡ƒnéÔWºñ‚
-ð½
-·:ÿÓÜK!ÕGÎAwÁä•Û¾ër•ŸÓ/%NcˆÓ¢"î*ŽM™ñZ
-‰„7_³‚ ºïÛ†\Ð´Ö«îhÁ¢®\(¤ôœj©Ë€I±{l…W¸Ôvƒ›7:ñY©–½…óøëY\[ËF4'’å‚-$m-¹4dþ»[±–ºjõ#ht£Ë- »ä,Vá
-VΔÚ"I/òF\"J¨›v#—c~ƒ"þÉê½0–“âÉúŒqÐ~rú§’£¥ž•†¼°«ó;¨Äe¤k¸oµã‚à2MçÈ«„z šáeŠ˜¿sHP–ZÊ@Ú™Y
-ƒW
-å;?¿ú1ì7€	éZyOk™ïº
-¥Zì4ƒÅ\¡š¢‚áXë\w˜J`*úˆ¨*8î²> H–”t î
-æ…Ù¾ÏVÌ•¸j‘©t­1
-E<Üiphæ2–\NPÕl'¼:BA©DÕÒòí]ò¯àäý°5Š[MG–öŠ‘¶oÄIfœåYuäoóX{‡)™FLÃÈ®Iè¼ÇÈ©d™aGê-tûjáàÁp^7ÖŒ@äÇIÉ}X¡Q~ÉdÎâÓÛõMΊtÂÊ"RÈéJԐu¬úêv!¤Mÿš:º˜	¬„\7Sí}
-‰·=veå
-–Þ9í¢šÒWY_4+qøÉ]0„IÊ2áu!LVZÍC{œ²Ki]µž‹¬ÍJ€`î´ÓçK\K]FNkZ<¦þlmÒ[Ùòû:µ9V
-c!™¯©ncZðÅÀ¹TßjâûÊÀ„	N’9M:b:hþ*²^‰úDµ(ú'EÝc#æIÕ×ò6~‹¡m§‹óoD†‚Z¯Ê¼Àâo™–-Ç…/ý•sÍÕSY4IGîk÷á¶y…M#(x§í|³w”ü††KJîMŠ¥ÂRõ£TW at sàjšÈjyŒŽ%ON”i°è/Ï–µšº­× ‚4\1pKÌäé”ÃAîÜ.Ì瘀xN—n«)w¤ªÛD-ÚÃQµ0¯y³àûÌtPǤI¢Ê6„†µÄÄ[N¨¶Î¢áXYåž9e!¨¢¾Þg²lýÚxê0“ѝ!ÿ÷ÁË„;UÝ°`SFí
-—êít£bRxiéܝ©sG;Æ	ºo\ 2wÜfm¹	óÀµ§o?µæ_|)—ŒT¼ÎÕ ~7kêcW…5[4ˆ'[?®î®×|9Ž´œùÖÚnj{™¿	{ÍÕbê k«v¶>ê^ñØ ¤Ð×¼-ÿýVkĈCÆO´ƒww
-UfE¨Â˸žUvÞ@˜ýÆO Æw¨±ã™cYÚß	å_援²Oþhِì¯G|-×,•¬¿,ö-FÜSd[ˆ{Ñ>EO…"&^F/\J$ÙѵnÕßiÚl5מÈ}#\ë>üÏ·ª"~zD”†<î+FÙM£§6ý-8¡?ŸDfVÆlµÅÀtmw:mZX>P*•/·šô*ó³cr¿”6¡\¼3hT%¿òÁwæΛ¬Ó}ÙkP}Ãn_n'(þä?ñ\¢„®ö4Æ8t.:ž®ÚS„Tm@dgd¡Æ
-¸ØaÑ}EÛïûÖmœá±Rt¡¿W”’kÈ·[¢£7f5ó5xK9 ®¿~ÝI“ÀÃ]j†—±­eô«ÑB¤<ü:\X÷[é-A!‚¼“õRˆñiáøq<#G[ÌU’œåÖËš÷6@{¦.TÇ•³È±pÁÌ»Há!_õa¢Õ‘ì·³UšÇ3âç†Â!PTBMY¡ç(É¢‰çe'†W·¯*ùœiÔõ BÄu}DI’ÊѬ–ïlÇzOß%-¦%vmÊÏ,µ×¨¾B¶ÚÁdù+[1Ť=àÅíàÍ"ݘE1–“!™J®ÎÒ1ÏPÇ¥çAwŸ$­h©Š<‚"š`Tïö¿‚Z—ÀÛù¶@»¦dM6&EçüÛŸãA­y¥¨ƒgÁYp–’Þ¢0˶¼\ÞÒJEïá4l,ùRíŠÊûº­2‡³oÈ–œˆÛuÐ.â%©Zϐlœ‹Ú¬EŒ‹eo[½2“A~Rör,Jö
-FÅÏû¼ÊØ=¤evá=ÒY[äKՏ›.	‹‘µóÜ—nro²lï:‹1‡{ïK£x·_éžöXÐü?oTm^'¢KÚ­'å••“ùs냜š¸v¡äÉjÚUdÞICß³°èUìN°9í*ÎÞé¸}e¸.¢³\oê“üm¥sHãxs¹SÃÃ',o
-/~7®þ Ç+Ó)T–W»[ÚéºÜ“”­Ô®üR‰u#ÈÜd?¾ŠãÕ-Ó´Næ ²Dh×xÁçì÷¬_@`ʵˆ;2àðC/Eoœ9’@þþ\zã$þ‘o´@ã
-ŽÎÒ'Fï{Xü擵ŸR¦Röº*vÙñ7 Æ>ñ6¢.¯wsë0"Pšî:uëÔ÷öH%W–(™,ŸM,wífgrŸZ©¸+å9¥ßƒ¤›âwt)23ÉlM9y%Ð3ÇÚAÌat“ì€>ûX§ÄiÏöP®¸"Sœ@gZÆ-Ú=ã	÷`û¿ƒøÆêøWn´í¬£YE–51TéÛlà*t3çXÑÉð6j4Ö ÄShF£%¶°í:z
-"N›øÍó%µ¸x|Vš"(Ÿ˜_ÑH˜Uõ¦óoDj¡Ý×AŠæY™S’¢BŸ×À$i“Ÿ‚ök»^£‡ä0葝RÔ|}O¸Q@ÄyÄ…GÇG5Ù@íTáÔ>·]ž?›Y
-*N´ Žïè³Á•ÁèÕ_ð¢éÔ•ç02£íi8x“Hs÷Œkö@=/Û™ÔnãÑ,©õTæ+…,UÉÏîa?—Âë?HÍBDÞA¿â¨ç‰$îäV+äÿÔ圽Z=†Â§_Ýöã‡GªûaíSÚé*¡‹ÈÜq±ÅßЏcôô ¥ä!“ƒ˜s‰ñ«BÓݦ¸p¨IµPL
-äIlø¼<Q-/1ïÝ}ï	ÖwîB;µÓ!Ø·*b=éFÑLf¿øæ—¼+"êfŒ¼1í-ûb=oOÁ×»„$1ˆ€¦×©}l6
-5Ǩ$[2Ráßy«€fAXçÂñ¥=Uސ\ê¿Óî¾ã1ñ{—jÎì¿óŽ=Búu‹¡þ6ø•LÖ笍zëj7í›<ÌB‘¢Æþ°MÖm±Û/;MÐêw.…Á„ÓLÕÇÛªú1„àݺµÅìaOèâ÷‚ÏU—^ù¡5£$Ú™/e€c'Ý_ôG1PŽúrï7N¬˜/*˜ÍýÒ™R`7vÅi‰ÑìzG¡éÔŽ®M‰û7ÅرkõùüªJð‚k¤C}x>x¢F–tÜÃNcˆØ‰KjÍzÐ$-ƒe°zuX8¦G…L.’pð”">ü=jZ¿:³²<ʸù¤Í$º,Ÿ˜M[1ÐÕ/®©â³%koPf<¡‹rùV°Ó¸jÚÂ…wmÅkõ%JH1–Ї‰å¡×œë•†üxyr	ŠTÙRâ#Ü0
-`+ÙÕ“mmûóÒ¥–“ŒÇ@T%ÆÌÈåõW@­F–`ñ}Ô&‰‘È@ÄÓ=;-Ù’w­—DƒÈγN5÷šß'ÂÛ¶ûÛÊšrZt×GrlÎÕ‚D½MaØ"&„•w“º­w»GWQ›2YQw
-iÛúp‹é5eÿÞ Êp™DÂt±y`AAßâ}ËüЕ/ÌßaQXéK;Âמ™ˆ ¸_[&h—’ú]í´…FˆÔÔϳ3C±_×49Ë0mÇiñ³:û³ÙøÀISi]ñEnJDâMÑÓÑP0ŠïÜ:Õ(—rƒÉ‹‹U2Ø´íI·R9Kû>_ Š3)!2þ?üûÿü"±5ÐÐÑÙÎÆÐÑ
-îÿ+12 0 obj
+<</Type/FontDescriptor/FontName/UZYZOC+CMBX12/FontBBox[0 -201 1139 700]/Flags 4
+/Ascent 700
+/CapHeight 700
+/Descent -201
+/ItalicAngle 0
+/StemV 170
+/MissingWidth 375
+/CharSet(/colon/A/n/c/B/zero/o/one/d/p/two/e/three/f/E/r/g/four/s/h/five/t/i/six/u/seven/T/I/v/k/hyphen/eight/w/l/a/nine/K/x/m/b/W)/FontFile3 102 0 R>>
 endobj
-15 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 82 0 R
-/FirstChar 11
-/LastChar 122
-/Widths 83 0 R
-/BaseFont /NPIXUF+CMR10
-/FontDescriptor 13 0 R
->> endobj
-13 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /NPIXUF+CMR10
+10 0 obj
+<</Type/FontDescriptor/FontName/ITYNZM+CMR12/FontBBox[0 -205 793 714]/Flags 4
+/Ascent 714
+/CapHeight 714
+/Descent -205
 /ItalicAngle 0
-/StemV 69
-/XHeight 431
-/FontBBox [-251 -250 1009 969]
-/Flags 4
-/CharSet (/ff/fi/ffi/quotedblright/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/J/K/N/O/P/R/S/T/U/W/Y/quotedblleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
-/FontFile 14 0 R
->> endobj
-83 0 obj
-[583 556 0 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 278 389 389 0 0 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 472 0 750 708 722 764 681 653 785 750 361 514 778 0 0 750 778 681 0 736 556 722 750 0 1028 0 750 0 0 500 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ]
+/StemV 118
+/MissingWidth 326
+/CharSet(/A/n/zero/o/one/e/two/r/g/s/at/t/i/u/seven/comma/k/l/a/period/x/m)/FontFile3 104 0 R>>
 endobj
-82 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 11/ff/fi 13/.notdef 14/ffi 15/.notdef 34/quotedblright 35/.notdef 39/quoteright/parenleft/parenright 42/.notdef 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 63/question 64/.notdef 65/A/B/C/D/E/F/G/H/I/J/K 76/.notdef 78/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 87/W 88/.notdef 89/Y 90/.notdef 92/quotedblleft 93/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef]
->> endobj
-11 0 obj <<
-/Length1 1338
-/Length2 6858
-/Length3 532
-/Length 7670      
-/Filter /FlateDecode
->>
-stream
-xÚí–e\”íö¨ia@º¤ºcè”.¤;„†:¤[Pº¤»‘A$¤A:BÁ3ï»ÿûÕ³÷Çs>ß™ù2×zÖ½Ö5뾟ç÷°2jéðÊÚÀ_€•à07^H(ÿLÎ$ñ	-Ô»‚`>-
-ü+qU‚xm´ nÖö@[+¨+øï8fóŸ
-¨±ý-À¯£©`¨£Äý?ûù÷E-+ÌM×ÛùŸ²eÿ͠ߌšâ4à-B$ÄøpsÊɯ›o˜´ç ¡Ž²×òT3¥¤ÁöÝsÐhÝQã­¥èÎ.L†+igW´Gê³JÇI¹ÕÓM™´òç‘PvŒh6Û÷ç»Ye£AX*[
-°%¾¢*¶Ì…6*K>›3zª-ÕúÞKõ£e&®ÔW·Ú=Ó/p+ëØêíf÷ß1Gš>	”߶†)8¯òËH*e·¿“L¬ÚY[°‚nœÊç?^fÛw(>îØ"ð^I?—÷Դê­|§ˆGгJ±ú˜{`Qê‘Á…ÿ¥Ä@«Ž}%w?ÓKªÒéË0¶zòH¥Î±µíwí뉤V³Ù8°èÙŒÍ1¼H¼YrãïÄNÀÛõrüŸ¬­{üÐé%Hb(Ý2É”Ž••bhmõPÝ……ù·„ü®ã4‹À‚[º®ÜèyžA'Š•E4Þ(1u'*ü¾f
-ºÍÖ½êÈcƒñoÙü?€§ûäi-'º˜â/·ƒ.!cìÚ™J’E@Õ¥¸/Ž†Híwʤw†5<¦KßÝú½„WÐÛÜúzêW	ìÛI~iª]£­%ý²–¦É.¶#—u£›ÝšËª„[”&;ä´C¼·G	i·¨¼aõ}MÑGR«K«ÔÈÜÊ[>þ÷¢cdŒۭ›`5ØM`nf‰Ž?Ç*NuDeø;_$N“7nKi“h{ôñAôeÝ]?/¤c¶ÿ£vðí¥Vò™^½}Aþé‰q;Bÿ1iAß—G3„h´)Ø‘åeôƾÔ}®•¸ã™;[ö,·ÔºRÛœ»ÞMsxÀÓ!ÏýPT—fÁ…üe‘™Åõ)µòêû8gu¡ˆTPˆËF•ÅP*ïVŽYUË—L¿Ð;²³&s’÷2!RÚ!o„•BõÜF“Ò©ÍSë§Ï#‰¦Ù\Ÿâ«:ZÔ–g•(-2ô¤w'ƒmŠ#/LÞžræiªž^
-NùZ‡"ÎÌ©;“/E˜Ú!¶Žþm¾ODD4~4þLá*Wž<[?冻»$™ÀÕ„)7)z§û!X<¶„dîä±â_yX	¹â—
-¦ô÷Ò"øÔBM³
-9È0߬¥¾‘ÍÙe1É-”OWríÙ½½Îå½òQÂö&Š±É‰œ$æ¡Ñ¸¦ú"UL+´mE±E_àÀª¡ü‘fÏeóCÒBšM_0ö;ÆpãÆuOÖãËvMå_g4«NŽ¶ù›‘|°2råõ,Kō±€æå-¤WÝó_QĪ™z-^ŠOÞ§Mªs¹ÿ¦Èäáõç£	El»žU8L·–ϐM
-œ…O~¨ð¬,/)5äúFA|“¡T†5ù’ 9m¯%“µkã$ôÉ|m&‘ÃÀ“,JÅÔà(Ùùˆ¶¸lžÉÂ¼³+&»Ì!3ÁCË>Î΢Ã)Y™P“»kuÿ$䣬@sµ-çX¶0’iÖÜ÷?3ª0¸wl¤t±c×Ìâ³XpkMèŒ>`’G臕Ìk…&4§¶¼	vT A·üÛ~Jè&ïSøa€’)VÊñÖ–Ùc³qf*gè‘ž¦BDz­é×Ø:š§Ýj5¢aú«˜"‹º±O²ïí¥]Ê>€6¬uˆöBÚŸƒq*h±’Ó¥MÜñ8W8v¢’=4½>ú0xP|‚mÛÔ±´åÃ~êÔº6OÈ›ÕgX¤Ÿáå²ÊÎtÒ½Ë>l×»«¬0¬ÒÆŒ.Ïœ¸¯T>½½8k×7fÕʘ#Xh{e½5¥¿H[(™мí$ö¬ÈF{Ñ×Ø+«[¯cèx£ wÞ–È^âO·4zJ÷¿(6Ů̅å‰j|‚îO˜ÇV[t3±ê)‹ó鮿Ê÷©ój¥¿À®G›
-ð1'á–µ×°k]òÁÇh>0>¤tPè„P9‰Qч=
-Òm@›óªó´
-]¾P‘5¿5vô2k¾ßw5á«ÐÌnp¶ƒýuÀ{ÚŠq7yx:Yï]LsÞÀßú„BÐ:Y´Ü£Ž;×õãìÄ’$ƒÜ9š:Pï^1‹…Ëžnô[ˆ·rM¦FIŸÄk¤Ñ4®>ãiN›Û¥"~›?Æ0W)§dÉa8´Ÿ[1’î?{i^Èü@ÞÒÉWoÿ\`%ëIWgºlNw[ëêÌ'•ØAïY¦Šaßo.s÷[“ª÷ï0½Èö½-vǽVÏ3¾‰ÚÛ?cTáXj¹D†t¬C_Ëêãä…©5\©îÛ(¹—᛼‰õ1ì6e¡¬ü”òZPióGX5î–Š(T!—«ù-†°¡¨‰Áæ76…r 
-äÕgÁ Z¾s†ƒM)fÏ`N
-fîûôÄé…ªsKƒðrg½äÕþ‰ÅS©¢TÄã‹2áyrõ9,$7¹å†ø}%d¿v÷A’'d	_¢€œ‚
-Å0¡½ûì,ÊÁ/ƒ·ù™–~ÿÄõn\$ëÙ¹¬¯¨Æ@sÍp•–7)¦Ðø*V5¡1=G)ò]¹ol|ˆº-K6…ÀH tȧl;rA}6öù½=QÜÊwíJòÆí3Á¹Òw·´Å¡¯ùZIº“å†X¤¤Þë¯XÖÙ„ÅN8$¤ ·²žk#]Ò:SÒ3ö4³&iìÑ©-øQ‰»õ4‘lɤ#"¶ÇœO°KÕ5Hëú?ùH,9ÉÆ8Ç2º7|N‹'PPÈOÔ<ÌQë0]Ç’Ñó6Ç£ucØ>vg¿íÞ_^Í·©)2G³¡íÚ(êÄ;™AË´.	o„õk‰UHÉ+Y$“T%ï†;éSˆSÑZB|½Er¸JdK¬5"þV·ÌÒóâH‰°ÓÉêÓ–“-X^ð–Š$Ó Ùæ¡ï“ŸÛÊýUþ†Ñ¥/÷R|*œ‹™å¦%Ôv‚è~jjv°¹ýÈñoßÜÀíØWèò%›·B{J´ú•Î¶5ÞÛ:”Ge#ù0µ›^ëìçVŸKŽoë?±4Š¥ 
-{ÝSÞÍë#Œèã{ÔË—y±ã3°â³^4
-»@B
-3ƒùø1¯Í™¾
-ÇFûÕ¹ø$úFØÚÔ–aÅÙ*1Ãtý2n<ºáæ1Ái¯ûŠÜOKp «¯{LÄ,êZ19ª²OçXÇŽX'Ü…Hú„6'NJSdSvBÏØã¢D:9/+oJšõ7º6ŒÀs®Ç[-·OSnï¨UUHK¾yÖ7A#Ô3¸võâ½&xíU?Ó¦q(wï’<2¶kš½ž5¯r3²[”]¼£y˜}gêË)°2ÁãÁ+üQÀõn‹^{³žÆ Ozì+JÚÅxø–èPyÕ×ní2ƒ»(§3a?;CÁ·õñ9y-?i=T¡'„Žx
-/F¤a?O8•÷ç$À`%Øà
-U?¸Ê·÷…ÉÁ¥½¥ãÉ»>ñ’”«.GîqkGpòh¨ó­—Ecíèà:¸ð´ê’ôhõHÝëP³‘=$D52óMHJ*ºÌ>3ïQ¢áüò³"ëÝcÌL.E~-ðïcï“*UŠĘ̀…¢Bpö­hç,ÂS½7–3d®gy®âRzì¨Ò(د^5Ep`Ñz@øλã{öÂLC$yJ—DŸØ¿¢ÂHÞ
-*-G’±k!ŠXª@*ïc/ÞPF\ÒÁð£ŸVµQ_ œY2æÊq-Œ§Ÿf$u«° ˜º¾-D5|êû¼Ûíhn‡ºÐ‰'”sÂvC†ª'‚[Æ)xÜ®þûzýyL¬Á*—À¢k¢ ÿc-5²‡.Î1§Öl	<¯tG²³­¤»n{‚ØBø°IÎIk²äæ"¯›«/EWØ•hÕ4¶ëðÈâ0³:rµS[úÂ5âßË}C½,݈?&[Â/ýñZ­ÚiÆzn:ãD*Ç]ªÃ
-mò¡¨æỪµ‘º>Îëš3›ä"Úî-8Å'CßhÏ
-ëùœ‚McõÑS
-2Š™)E’Œí}»(¼“ÊOºÎ×vëßľŸ}ëítÜØ媔®‘dú|Œ:"HÈ­/³ô¬|ñ¤ØT”.›2”¥Ø%¹×žŒ‰¤¾3ÀÄ­š#<pËpÑ=4©sK‰Þ)‘´8¿—2aã{áHì4w"­|w“|ôI¸'Ñ*_A­¯!=¬yƒÕíŒ-®<;9!ÎÆ)™Ùb°u/e%ÿ@ÎoR®¢ŽåG‘Ÿjz ©l¹ær™ä:!›%±$<O¸ï¿[:eùæ
-ᇫGÞžƒ~ñ+ÍÛxœ­·‰{¥}kK:cW´Ö¤82Ÿbþ4¸¢Ïb`W¦'²>>4|ThFµUÜj2QšW9cïÀ6¼EIkò©ßÆ‹áíD–TtÒFÝ–)+8 0 obj
+<</Type/FontDescriptor/FontName/GRQREI+CMR17/FontBBox[0 -195 744 707]/Flags 4
+/Ascent 707
+/CapHeight 707
+/Descent -195
+/ItalicAngle 0
+/StemV 111
+/MissingWidth 301
+/CharSet(/A/o/d/p/e/quoteright/P/r/s/G/t/i/S/u/T/v/hyphen/U/J/l/a/m/b)/FontFile3 106 0 R>>
 endobj
-12 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 84 0 R
-/FirstChar 45
-/LastChar 120
-/Widths 85 0 R
-/BaseFont /SODXSF+CMBX12
-/FontDescriptor 10 0 R
->> endobj
-10 0 obj <<
-/Ascent 694
-/CapHeight 686
+71 0 obj
+<</Type/FontDescriptor/FontName/FVSMAJ+CMBX10/FontBBox[0 -194 1164 705]/Flags 4
+/Ascent 705
+/CapHeight 705
 /Descent -194
-/FontName /SODXSF+CMBX12
 /ItalicAngle 0
-/StemV 109
-/XHeight 444
-/FontBBox [-53 -251 1139 750]
-/Flags 4
-/CharSet (/hyphen/one/two/three/four/five/six/seven/eight/nine/colon/A/B/E/I/K/T/W/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x)
-/FontFile 11 0 R
->> endobj
-85 0 obj
-[375 0 0 0 562 562 562 562 562 562 562 562 562 312 0 0 0 0 0 0 850 800 0 0 738 0 0 0 419 0 881 0 0 0 0 0 0 0 0 782 0 0 1162 0 0 0 0 0 0 0 0 0 547 625 500 625 513 344 562 625 312 0 594 312 937 625 562 625 0 459 444 437 625 594 812 594 ]
+/StemV 174
+/MissingWidth 383
+/CharSet(/A/n/c/o/d/N/p/e/r/s/h/R/G/t/i/fi/u/T/exclam/I/k/w/l/a/x/colon/m/W)/FontFile3 108 0 R>>
 endobj
-84 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 45/hyphen 46/.notdef 49/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 65/A/B 67/.notdef 69/E 70/.notdef 73/I 74/.notdef 75/K 76/.notdef 84/T 85/.notdef 87/W 88/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x 121/.notdef]
->> endobj
-8 0 obj <<
-/Length1 1079
-/Length2 4669
-/Length3 532
-/Length 5383      
-/Filter /FlateDecode
->>
-stream
-xÚí–gXSÛ¶†é]”¾EjBE&M©"½cH„ „ªôªôŽÒ¥w¤”ªT©Ò¤RôĽïÙÛ»ÏÏ{Ýç®üYï7Çã[cŽù<¹y]KGð.ÂÑ©ìˆÆ
-B@I at AC"@@BT7o*`0,Ê­Ã"%ˆ„¸ëj
-1IèmI!Qª›€‚£ƒ²¶Á<
-¼¿‚ā»H
-C0¬
-ÒŸ³tá($îÚÛÚ¿v¸-üː
-ÚÊÿSF¸:ý{É
-‰qÁ›xð&y¼E„#Ú VT`MG|-$ÞÉÿ†©&Wvµ·×„9üJÿ«Iÿ±s@Ùãþ+ÀÑÁÉ‹Ä-·¬`ö.È?t$ñOø¾ýa¬ªo(ohÌÿçyþ±¦C¡±º8§¿²þ
-þƒ!3¾;”`"‚àñ¿¿™ý£–îˆ@¡ñ!*À0Ž
-?x¼ -@z-`¬ûo,
-€]nHôߊ8-é
-‡û‹KD‹÷Ãåm瘔±+nVÒ<Y÷Ò4pËNœG›ëF6E	|˜í+J0Ê{ólçíF¶¢î*ùôu‚·ÚŽô 1qCå4{½Ðàjnèumºç¢0‘Ðwº„8’™¡@_ÛPŠþ©]Ç×K'¹Yñ?LÖ>È™0fŒ‰™¡Ç&lÆìm`‘Q÷ùE8¢rŸ¦76”e€e‡¡uÜ1)èQéŒx˜˜RWÜXïgfïÚg¾ €éÑà¾,uwaPõJÁ3—i&M£ çSsúH`OýRs³ÉП°ä#ô¥÷—ܬ÷v<'T¸P:Þ™¶j>Nz:—¤-{ŸXtqÒÀ—˜ïp=ÔänJ´'c¶¡“V×;M½fñ=½ñjñÁ¤=]룋ÙÏ/{XÄØ$dôãöŽË
-ÆŽÒß™o™¥4&ù¤'
-¹Œ[Ÿ4[¹È]kZ@a€îÌ÷.8n7Õx¢aÚ
-ZÞ«Q¡Ñãtä_sfª˜ÊÃÞøm«9/]¡Id›µ)Tïár.'b¦“dqÒ:±y#kýá2÷=՝tFØŠ9J¸)´@,d½’0>üXƒ!…òu
-»§ÐV¨š¾òBûaË;à`Á­š©[o®ôP µ¥l÷‚åP³7†&5<òÝlA%(­Zu=%š3:Üñ’$‡6Òzˆ¾*ÞçÏzÀ`5ÉÈ^˜1ú^c*Q62–ú,X84?>ã–++ËÖÿ6
-ªƒ]ôýªÊÝ·:À ˆj<Ør³“­Ãýœ}™^÷ÆøˆÂ+/Òõ+¸[•Þ/Ïœ$Ãðƒt³øûׁƒjg-º\€äÕ›+B¯Ãí<ý˜u8⊿"ÛÜ~ÚG\>új
-và´ª¹™y`!ŸY&41ð‰õ÷¢}Ÿë3ÖŸ.»cÌ?Ãw‘æ³óé&%­4DZv«ðŒ*("7?5èþ#D˜˜êº9"PC=ÿñö¤æÎüª•&¾qèì¿Ô}š„mw-3ð÷Ŭó¶-ÀS؇eÄ/êNOßWôºÀErØ*+TóÌ]¥fóUéVf	½±o÷©ÐÞÀUr§YRȼÎc¢Ò·£ZgÍ:×)ÀMkǽÉRÛ”¨l¿oÚHÁ¨rºçdÅ„4p»ç\f¯Å$Z_\’R1遙é=ªHàQOå'½6O€ˆî£>—é«2­€‡$__h÷R²ïÖÝÆÉÙ¼òÜmÊ,¸ÛÌs‘«‰¯…–z#ßk‚ï[>»`ôÔi‡Ñjqe䒖gLýMfÃç1¹ô”Eì{Õ!›­·OY9¾nV©;Ìt¬“Íù ~}‹xGxd<;£Ð˜™+O9 içÑjréûpMƒûÝhÙä¸u'û¡‡wsÇmÑRá*Ç4öKè¼D#’i,4ˆ‘zÚ9)»PÜ"ן§(Dq+ >x'¿µìÛMÈt‘pv|}qñcÓåÉD­«¼‹¥×Î/P€kd~ôœ<È¿ÿ>5Ó…$ìt¦lm)êVí-CÍ÷	/È¥Rœôk]XNÛ×ù˜¡ò¨¬8ÓÖ3ÐKêuVqÑh–ú	!—lxk’<Œü°}½*~*!2'/«à¬ØÃ4Y@\pSb¸‚ĆëÖÜ÷¬ÐdWËÍ.<¬³aY[1’¦é2´Œ7c÷gã¿k1Éw‡•/’èí†ÅTº–
-{ˆ¤ï}÷:È¿"bÑf—ómµÍßêÀÎ邶Z€,ï±ï¦oGd·l'0»¸a3€ñC³ëÏ|®ãÅ››û–œÐ<vÍÌoÑ´‘¹¨Ú	ƒ
-ék=òÊŸ_³ÏºšLµ{Í®©«u<Õ1~"ÙdHl7ô”J¹¥l´U±MïPï®®ÂÎ$-Ÿ*õ\‰âˆÖëš¼vDÁuþt>©Å±%;²ç`µw¢U³‰/7k·UšßŒÏ;ûÝYÛ˜íyY}@ Rn¬âì?'jÐ-Ss«8‡Ê”
-FßôYr )©1¼wÊC#q*ݐkim0u¹9cÁÒ—·oAéJÖêÀ‰òñ—‹qBµ‡gqvg~Jª¾•yÎ϶ì4/m-Vh³ëïf×N'ç"V“ù×ÚsiU]$³îÉØó†œî
-ž7OñZc²Gí;³Ö	'ÇB7¿‘iå˜Q›k V‡M~\É‘SßF'Çl(AÕ¸Œ%CS;y:‚º³óên«®ï!ü¡1‹´n"’I™uþ&çHºdñ¨‚ìmNͪ[7-C¼(·µ*9Ë×P”°='ØÞwO‚m/vE¿E¿||ÝûË;Ñ؉K”5‰Ì]‚9g%B±‰Ÿï™Q=8§ÓsÄö¨<°Ïã2÷ë
-ò†‡Õ°Ç´í½-#×ꃋ/l‰µžÒsç9h *^'yÔ{‚cˆFˆÞe3iÓ-ÒŸ¦m$Ux0áN»¼ïC™S}ïõ-nÝ(1²©R|§
-÷_Fb‘‚ºu« ª`;Ï(%¢Ù}¤×ìŸ-1º,k×òLÐT„fnÜÎÄøò¢½àË0õ‘–ßµ’½’¥³³Êµ(¹X›†Z÷öWKN\j<øÓXòò­‹WKc~lÇ|zAÅÇVCÐk#?\ËC4òÓ®”“‰v×¼t¬¦újK©÷%C]OUÔÚ½û”Š&Qj¶çÌU÷XΓZš£5ZŸkW Ó_(ï1€Æš¸9†·_(W›X¬
-€¢ß¼M,)´édƒ"Ŷd-¶åÜùËõàȽ½Å«s—;Lõ	ì|‰ŽFØw3‚©‡.
-¿83RÖx#±I$s®:iøÁ*»§ty‹ŒÔë8ê%Îw6µûyõOŽ¢¼á!Í]thÆLR宵íÉ”«é;};ZDé|µÑÒq?¡åÙ§øªˆ½“u¦$fx™šÀmÖá+¼nR±q
-ñË“”ê¬ÄBŽÁ®Áë/Íf5ìÍ™.¶—˜mKL“óg`ŽÛsû.
-Ù?Ũ]b…O¿Ó"¥™0–%sŸL>²º²ö½fêûúæžõÔˆäÔ8?ò]Æ5·˜ÏJ»(â½Ä’¾óé]'´ê´¨êWø|™óغ‚oÛª­7…âèR€…©3*å+‘]$j%fãDhDôV/@í.E°cùˆ!ÅÕ‘p'kl…áÞ›(ôÙ7°BŠµA²L×æ'èUš¢©÷¿²&Îæs­ƒ;ª©P½Ò·’¸„²?ûcwn	üàUæë|ÂCgA0cRÑÓt5L¨¼aEâfY ·è×’fE’¥šï
-Å	
-w|>߯ɮ濱ô¡æ%‘%
-¯;dyßí¼¼žRõ”mš¬M*}$~dHF͈Ǟja:_M…é‡ËÃ]'Ÿ²Ý÷•Âö[…6@¡~:/©õΧ˜!8Ì^ØíÌ–C.®ÓóÆTé…Ÿ0ôƒé‰@D–뇲ºFp}…Pä®xÔ5.HÓ«aê9‹BP¤"Û$³êŒý@¹AÉ.=úŠoÚ
-‰2³“™8§|´Y<µ.-ýõîg{‘’šyˆ¾'K{’ü;Ðq€@Í
-„9ÇŠ¾¢ö+¨]ÂóP¾ÞºEðFga¢û¡ÜÁ¸ÊÏÅeJ/FnœV*mçÒCmÝv)VOW‘¾PÒ:÷‹#Án‚:é)Zw²dŸ†MJe¶Ha ŠT…yÔC‰ºGK¦;Ù"R‹
-‘s¢›sJ粘ϑòÜùõùuô3ÏÇ•òÌ?©ô_`ÑýÊ(
-HåóįmjÉ2ˆ»7„¢²¨Ò6ˆ¬««)˜öùÖ÷!âïAÀô‚s‰™U)ÛU)ÅiUÉç먂®¦7+¥C„fsœîøÎ
-ÞúrC_zLÍÐËOAæJ_ÀV6ÇYjN¸‰tA*ÂÈÛÊë;[)M´	ä~—ð°ÅÌrӧχžg¡¢``qñi‚Q…mÃŽ¯u‹Óz‘pž ™œ¥ÜÒ¢Kk’ÀÕô…jÒ|·‹&tëÚ·”üxÞ÷Ö˜¤á楾ÐÅ\6ŠA²ÌÝè8š²é|>8Ó¯¸â!øHùNŽ@òÛ8‘¥ñ¤P¾<F¶û”âù‘óß"ýK;xNÊnµ†K–X”Y°÷¸<1 Wöm¸±¥éO=#u	þÇfñÇ¡oÅbc¥ËÅ|·Ü=û-¬!3/~\Hìd,uX€†î—ºZ*Ó/Šu|ËØ­%œäÏç<u»¼°ZÀAÛd¶ÚòóÛµk@“1=§ª¤%ËóŒý~ŒÔp&x»¡žžiªaŸåþøsÔ5rŽ;ºÀ$½”×Ù¯Ðê„äZ¯Eïvç©^ŸyS©æ¼¸›9€½õäü£õØ´‹r=Sž«A‡ª4fÒêÎÔ2H¡z
-kk‹×€=‹w6O¸*9Ý‰%®@FÝC“Tì'\Ȟ熋&¨|‹™áw¹bxÅI`wRÉ“ç»ágN9vD}„ÃhŒG/¤e§þÁwŽkÁ°SœüÇ#𧅍…ÓÞÆ>âÙsõ˜"âSÞæ;Ìý»·qú<,O¤—JòXIl{*ùÅéûES}*‘1b#>ÂjLû ¶7",Ëën:UðNßûè±È˜V7g’ç{¾/s_JûÎÇôK½Â	·Êdôò½õ„¥M;t‡Yy«¿£ádŠÄö5ô_ܯ¿hŸ¯´Œ>½hàØÓ²ÉÄq0LÍ#ÉY]ú¸EôöIö·»Â¾ò2Úu’„û¥uQ§_HÅSã×pcá©­,î·™*M,l¼»¶’FÏimôR]vžñZv>¥¦N­Ñÿ¾Ø¶o
-/âÏ2ò2zdvRëÍ *ù¬­7,.!ºHÙ3Êüaðd#I©ó‡æ«5/ÛŒ­Çhn´ÍWgÒ‚­èª~
-—úÌ‹×Ißrҍqƒço’(›/îˆçYTêeµãÞ$€Ü=Ս^—­»Y:_!dÜo|‚23>‘^ÀÏ]ôU;»z‰4”&Úz´ÂÇ‚ï…ʾwl¾óq^Rú—G3£×xŸ¡Çá³Ï´¿Îäy˜u©hí´ìVÇ“ŒŽGôô†±5K©¯÷&gv*=‘5Îy;Åz(ö30ÿÊ+M•í¯5Ík<r.ä¿-t[þ@~?`º‰{ùL·]σÂÑVÞ—­bü²SxÅŸØ´h4¨Õ"“ná`Ùf at W¿ìñµærhWkLAì{†’C«óÕªú¨…”fZpŠŽÀnð=Å+Sï´RɽXÊNºÚé
-òž2ÌBÿÇêÿüŸH+34 0 obj
+<</Type/FontDescriptor/FontName/WNYVFJ+CMSY10/FontBBox[0 0 443 444]/Flags 4
+/Ascent 444
+/CapHeight 444
+/Descent 0
+/ItalicAngle 0
+/StemV 66
+/CharSet(/bullet)/FontFile3 110 0 R>>
 endobj
-9 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 86 0 R
-/FirstChar 44
-/LastChar 121
-/Widths 87 0 R
-/BaseFont /JVXBXZ+CMR12
-/FontDescriptor 7 0 R
->> endobj
-7 0 obj <<
+27 0 obj
+<</Type/FontDescriptor/FontName/BNGLQK+CMTT10/FontBBox[-4 -229 537 694]/Flags 5
 /Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /JVXBXZ+CMR12
+/CapHeight 694
+/Descent -229
 /ItalicAngle 0
-/StemV 65
-/XHeight 431
-/FontBBox [-34 -251 988 750]
-/Flags 4
-/CharSet (/comma/period/zero/two/seven/nine/at/J/a/e/g/i/k/l/m/n/o/r/s/t/u/x/y)
-/FontFile 8 0 R
->> endobj
-87 0 obj
-[272 0 272 0 490 0 490 0 0 0 0 490 0 490 0 0 0 0 0 0 762 0 0 0 0 0 0 0 0 0 503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 490 0 0 0 435 0 490 0 272 0 517 272 816 544 490 0 0 381 386 381 544 0 0 517 517 ]
+/StemV 80
+/AvgWidth 525
+/MaxWidth 525
+/MissingWidth 525
+/CharSet(/colon/L/A/underscore/y/n/c/semicolon/M/zero/B/braceleft/o/d/Y/N/one/C/p/e/O/two/D/equal/braceright/q/f/parenleft/P/E/three/r/g/parenright/Q/F/four/s/five/h/asterisk/R/G/t/i/S/H/six/u/j/comma/T/exclam/seven/I/v/k/hyphen/U/quotedbl/eight/w/l/a/period/V/nine/x/m/b/slash/W)/FontFile3 112 0 R>>
 endobj
-86 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 44/comma 45/.notdef 46/period 47/.notdef 48/zero 49/.notdef 50/two 51/.notdef 55/seven 56/.notdef 57/nine 58/.notdef 64/at 65/.notdef 74/J 75/.notdef 97/a 98/.notdef 101/e 102/.notdef 103/g 104/.notdef 105/i 106/.notdef 107/k/l/m/n/o 112/.notdef 114/r/s/t/u 118/.notdef 120/x/y 122/.notdef]
->> endobj
-5 0 obj <<
-/Length1 1069
-/Length2 4336
-/Length3 532
-/Length 5041      
-/Filter /FlateDecode
->>
-stream
-xÚí–gXk·†¤JU@Ä¡#-	%¡(Ò»€¥H‰$@ $!ôÞQ”*U"HïM©"Eº€ôŽtòE÷ù¶žýý<ç×¹ÎÌŸ¹×Zïó>³fÍ5ÃÇ¥o(ªˆÀÞEªa1®¢1ˆ, |Ã-*_ùYx”
-Ü€»Ú#ˆ6p4`ˆµA!]½Ä-CúiHc‹`…n¸§Ü‘x¢)@hò
-@´ˆÀbÐ^-ð-E üâ‘Ê‹Ž{»9ŸDàe=«-^ûª$¢puS‰Ž	ùšK5n`ÏöaZá£ÀtU’š‘ÑÕì'CîÍáHçô…ÃXf·]"-“L•môlЉ½°“(yÞ+‡¥ô¢Iç²C<	zì¼z$–.—Ö_«ƒ¦>YƒQ«uXÿVp†[ptgNL¤¸(]·Â"9NÈ{¨„m)[,-?¼HÉÊ3;ÚY†îY|6ᇘ?;`nÈ'§qXЩÁê”NN+eêß—$¨H¡Ss½¿!é·*¥e#Ù³½»;'PÍýÊ‘n7’;ÒQ¾'hq<¯~ð†²×…†Õž†Q”jÌÄþÅ°{¡>†áóÜ°Îu¹D;‘›…	~8cáŠÖ¹[ßù^ù‘S79d9ÛX€n°ËÉÛnÖnŸ¯†-.pêšÞ|ðîú™Q&€ÅìÑ„…n÷{¿á×5ÚÒ‡Ù¤_§c$9®Ú†&°wí,áÆ»ƒ¶ÈÝÊŽo¿
-Þè–.xR±uql¸QÞbnс~~(ønÔ 0Ø9L§0x’i¬ɸä\Õñ}‰ÆèBÜÆ5–@‡¬åHѲ[khÕ§u_ˏÖï&—Çxl%'/Ê'q¾™®Šñ>ÌæmÞçŸà~Îõ«#KsçY¯x]w at XüV$7ˈ(%µqÌ„›ŒÂëuSÜ@9ځ2º‘h¼p]uŸö,«DW&cÎSç¾Ëþ¶\=s4Æ÷ìõ©óé~\«c8î?PËÑ£{øóqv0ÓJ~^xßûڮߵQ³¿úv2Rrri,P‡IQ(Žñ3i´‰Á̧‰ÐêB&¾ä|Ý¦µT¦§Š
-*u2^C¯?íÈŽEO¤Ó”Ú=¹€êμè€Mí."0´qîIüØÑÅKF¶ø„ï­RRÊî±¥o’¦O(÷N>JѬ•œ3œ`^³DÅù—“"é
-³Ó?=
-Þ›çH2»Þ‡µísl¶Ó©šä¹'Ùy--ÃyŒYìuåz§>}R	å²Ï¾¥Ž+gÙÍl¬;Y¿xž®Xw*À5Ïû7îù7FÚ2¥87ÕŠo/ÝOðæ¹–òr{o¢%·6SlÈhÔ'ÅUÅ=e6*^xÿCü ð
-Ç6(ÐN$üysÔ2Ÿ‡1í—êáЖ¦•6çƒN(g_Ó££Ë™·|¢pšc¦šƒÊëä+óÇÃÇ+\nAaö'Çq ¨³ÃL]V¸9éÆ‘xd%ˆ%mâe~üûöJ¸Šó-1Ð)æJ¡s²PE=4 Ôjü¨²“Ò„É.¨3ŽF¯>±jRI:šÊ9UVÑ—¾mpF67}õaklßêd§ai{pó„=v&Ýd9+“yQ¾)yŽý­àf{Åk³“½&!ZàþdR2m‰Wr¥@p´c©`8ªÕš¢¹_þ”ê
-/@ò·
-ºƒœ)4ã÷Ÿ/Öò²þäwT‡ÇŸ¾0“z³“zÛ¾™s“ü².—¾Ácûb‡Œ«Êžw)-‹ì}»ª%¥Y3
-’¤bI¨ß}–/	SìaÛVòA¿g$>^¶¶uÇÝVY‡‚à6æ¬Oþ¾‚O~¦‚-áó¦:T­ã}¸ûÓ·WTKÍJfŠÓ‹:J8r¾ê×S{÷mAŸÔ\MËD¤JŸ©,öú|)xµ4onÇ]:M€ÝàŒ»o+R
-Þ’:Ùå$ãkéâ­£(‚d넉ÿÝ$~ïaSìš5 ÙLJÐp²+œÑò
-IÚ)!Z®ôC¡¶æ‹™®“Qsyk~0P¯I¸-
->øXjûž–:?cç‘™¥¼jÅ“Ë×Î3Äì©\Šr©ÍU6v2{}	fƒ(¢&2rĉڌ
-Û•XÕ˜ g /×®kŽ…å'©ñâ	'"ʶuèômV·ÐІÑÃ<z»ß2;¡ay2;6¿’DÇòê¸Z#žéO^ÈÍSIÿÐâZJxÉþXù.[SKº÷{qª2?Žj;]†Ã±ÉÀë±ø¸¹¹"ó¦€þ$öÅ°Ëî¢J8.ô”â³øW£P»[¯ŒÉ_èP·½£*V,j0ó„AxËp°¥Ñ]Líí-éOOL·‚.«Þ’;ðT•6±®Cg9·yo&vÕƒ'ä|xÂÏ+¨Yq0;¦)å€ÉжŠV/Hî@Å`vJ8Mw®5	éÊÓ.*(·}ôåëÐvÿ±ø|cß)D¤¦Õ[6lRBW®ÄÛ¬-m›<Xí®ùæF:„¼aŠ·œ‘Pc¥…%ošà\oõáÄXzq’™ÂÞ¬ÒrÎm=‡œ‹ø?½ ?ŸH]¶’Þù˜åí¨ªømsjÍþŸÑÒ®>]×G50Üèë I¦ ›Á®-ˆÜîó\n5BŽ¸[Á×+¯º7·
-÷Í2ÇçìF˜°)žÛœ:²Y^";+£¤^³Þ™Z*U>W–Å„s#tû®mœø2’óÏ=rا½<÷@¿ûÃuá&fðÿð ùÿ6h$ïŠu‚ãiþÞVC”endstream
+20 0 obj
+<</Type/FontDescriptor/FontName/IRVDMF+CMR8/FontBBox[0 -205 857 704]/Flags 4
+/Ascent 704
+/CapHeight 704
+/Descent -205
+/ItalicAngle 0
+/StemV 128
+/MissingWidth 354
+/CharSet(/y/n/c/o/d/p/e/O/f/P/E/r/g/question/s/h/t/i/H/fi/u/comma/T/v/k/hyphen/w/l/a/period/x/m/b)/FontFile3 114 0 R>>
 endobj
-6 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 88 0 R
-/FirstChar 39
-/LastChar 118
-/Widths 89 0 R
-/BaseFont /XKNQOF+CMR17
-/FontDescriptor 4 0 R
->> endobj
-4 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -195
-/FontName /XKNQOF+CMR17
+18 0 obj
+<</Type/FontDescriptor/FontName/WTBOIB+CMR6/FontBBox[0 -21 564 675]/Flags 4
+/Ascent 675
+/CapHeight 675
+/Descent -21
 /ItalicAngle 0
-/StemV 53
-/XHeight 430
-/FontBBox [-33 -250 945 749]
-/Flags 4
-/CharSet (/quoteright/hyphen/A/G/J/P/S/T/U/a/b/d/e/i/l/m/o/p/r/s/t/u/v)
-/FontFile 5 0 R
->> endobj
-89 0 obj
-[250 0 0 0 0 0 302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693 0 0 0 0 0 726 0 0 471 0 0 0 0 0 628 0 0 511 668 693 0 0 0 0 0 0 0 0 0 0 0 459 511 0 511 406 0 0 0 250 0 0 250 772 0 459 511 0 354 359 354 511 485 ]
+/StemV 84
+/MissingWidth 416
+/CharSet(/one/two/three/four)/FontFile3 116 0 R>>
 endobj
-88 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 39/quoteright 40/.notdef 45/hyphen 46/.notdef 65/A 66/.notdef 71/G 72/.notdef 74/J 75/.notdef 80/P 81/.notdef 83/S/T/U 86/.notdef 97/a/b 99/.notdef 100/d/e 102/.notdef 105/i 106/.notdef 108/l/m 110/.notdef 111/o/p 113/.notdef 114/r/s/t/u/v 119/.notdef]
->> endobj
-25 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 90 0 R
-/Kids [2 0 R 27 0 R 33 0 R 39 0 R 42 0 R 45 0 R]
->> endobj
-50 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 90 0 R
-/Kids [48 0 R 52 0 R 55 0 R 58 0 R 65 0 R 68 0 R]
->> endobj
-90 0 obj <<
-/Type /Pages
-/Count 12
-/Kids [25 0 R 50 0 R]
->> endobj
-91 0 obj <<
-/Type /Catalog
-/Pages 90 0 R
->> endobj
-92 0 obj <<
-/Producer (pdfeTeX-1.21a)
-/Creator (TeX)
-/CreationDate (D:20070709134125+02'00')
-/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4)
->> endobj
+16 0 obj
+<</Type/FontDescriptor/FontName/WTBOIB+CMR7/FontBBox[0 -20 529 674]/Flags 4
+/Ascent 674
+/CapHeight 674
+/Descent -20
+/ItalicAngle 0
+/StemV 79
+/MissingWidth 384
+/CharSet(/one/two/three/four)/FontFile3 118 0 R>>
+endobj
+2 0 obj
+<</Producer(ESP Ghostscript 815.04)
+/CreationDate(D:20070811165352)
+/ModDate(D:20070811165352)>>endobj
 xref
-0 93
+0 125
 0000000000 65535 f 
-0000002765 00000 n 
-0000002660 00000 n 
-0000000009 00000 n 
-0000381395 00000 n 
-0000376080 00000 n 
-0000381240 00000 n 
-0000375246 00000 n 
-0000369589 00000 n 
-0000375091 00000 n 
-0000368686 00000 n 
-0000360738 00000 n 
-0000368528 00000 n 
-0000359408 00000 n 
-0000344595 00000 n 
-0000359251 00000 n 
-0000344251 00000 n 
-0000341867 00000 n 
-0000344096 00000 n 
-0000341523 00000 n 
-0000339136 00000 n 
-0000341368 00000 n 
-0000338305 00000 n 
-0000332045 00000 n 
-0000338149 00000 n 
-0000382187 00000 n 
-0000005496 00000 n 
-0000005388 00000 n 
-0000002902 00000 n 
-0000330740 00000 n 
-0000317294 00000 n 
-0000330582 00000 n 
-0000008370 00000 n 
-0000008262 00000 n 
-0000005589 00000 n 
-0000316978 00000 n 
-0000315593 00000 n 
-0000316821 00000 n 
-0000011192 00000 n 
-0000011084 00000 n 
-0000008510 00000 n 
-0000013575 00000 n 
-0000013467 00000 n 
-0000011273 00000 n 
-0000015557 00000 n 
-0000015449 00000 n 
-0000013680 00000 n 
-0000018211 00000 n 
-0000018103 00000 n 
-0000015662 00000 n 
-0000382295 00000 n 
-0000020213 00000 n 
-0000020105 00000 n 
-0000018292 00000 n 
-0000022740 00000 n 
-0000022632 00000 n 
-0000020318 00000 n 
-0000024810 00000 n 
-0000024702 00000 n 
-0000022833 00000 n 
-0000314678 00000 n 
-0000307525 00000 n 
-0000314520 00000 n 
-0000026180 00000 n 
-0000305946 00000 n 
-0000026072 00000 n 
-0000024927 00000 n 
-0000307420 00000 n 
-0000307312 00000 n 
-0000306086 00000 n 
-0000315230 00000 n 
-0000314938 00000 n 
-0000317208 00000 n 
-0000317185 00000 n 
-0000331551 00000 n 
-0000331202 00000 n 
-0000338858 00000 n 
-0000338563 00000 n 
-0000341769 00000 n 
-0000341734 00000 n 
-0000344497 00000 n 
-0000344462 00000 n 
-0000360238 00000 n 
-0000359854 00000 n 
-0000369249 00000 n 
-0000368997 00000 n 
-0000375725 00000 n 
-0000375504 00000 n 
-0000381870 00000 n 
-0000381645 00000 n 
-0000382404 00000 n 
-0000382471 00000 n 
-0000382522 00000 n 
+0000061343 00000 n 
+0000101592 00000 n 
+0000061185 00000 n 
+0000058685 00000 n 
+0000000015 00000 n 
+0000004972 00000 n 
+0000061391 00000 n 
+0000099596 00000 n 
+0000096006 00000 n 
+0000099321 00000 n 
+0000095657 00000 n 
+0000098988 00000 n 
+0000095270 00000 n 
+0000098511 00000 n 
+0000094606 00000 n 
+0000101367 00000 n 
+0000098346 00000 n 
+0000101142 00000 n 
+0000098181 00000 n 
+0000100845 00000 n 
+0000097668 00000 n 
+0000061432 00000 n 
+0000061462 00000 n 
+0000058853 00000 n 
+0000004992 00000 n 
+0000009777 00000 n 
+0000100336 00000 n 
+0000097186 00000 n 
+0000061558 00000 n 
+0000061588 00000 n 
+0000059015 00000 n 
+0000009798 00000 n 
+0000015038 00000 n 
+0000100143 00000 n 
+0000096950 00000 n 
+0000061642 00000 n 
+0000061672 00000 n 
+0000059185 00000 n 
+0000015059 00000 n 
+0000019954 00000 n 
+0000061770 00000 n 
+0000061800 00000 n 
+0000059355 00000 n 
+0000019975 00000 n 
+0000024247 00000 n 
+0000061843 00000 n 
+0000061873 00000 n 
+0000059525 00000 n 
+0000024268 00000 n 
+0000027920 00000 n 
+0000061938 00000 n 
+0000061968 00000 n 
+0000059687 00000 n 
+0000027941 00000 n 
+0000032886 00000 n 
+0000062033 00000 n 
+0000062063 00000 n 
+0000059857 00000 n 
+0000032907 00000 n 
+0000036515 00000 n 
+0000062106 00000 n 
+0000062136 00000 n 
+0000060019 00000 n 
+0000036536 00000 n 
+0000041310 00000 n 
+0000062201 00000 n 
+0000062231 00000 n 
+0000060181 00000 n 
+0000041331 00000 n 
+0000045463 00000 n 
+0000099865 00000 n 
+0000096446 00000 n 
+0000062285 00000 n 
+0000062315 00000 n 
+0000060343 00000 n 
+0000045484 00000 n 
+0000049724 00000 n 
+0000062380 00000 n 
+0000062410 00000 n 
+0000060513 00000 n 
+0000049745 00000 n 
+0000052055 00000 n 
+0000062508 00000 n 
+0000062538 00000 n 
+0000060683 00000 n 
+0000052076 00000 n 
+0000053893 00000 n 
+0000062581 00000 n 
+0000062611 00000 n 
+0000060853 00000 n 
+0000053914 00000 n 
+0000057411 00000 n 
+0000062654 00000 n 
+0000062684 00000 n 
+0000061023 00000 n 
+0000057432 00000 n 
+0000058664 00000 n 
+0000062727 00000 n 
+0000062757 00000 n 
+0000062811 00000 n 
+0000070549 00000 n 
+0000070571 00000 n 
+0000074729 00000 n 
+0000074751 00000 n 
+0000077347 00000 n 
+0000077369 00000 n 
+0000079928 00000 n 
+0000079950 00000 n 
+0000083012 00000 n 
+0000083034 00000 n 
+0000083359 00000 n 
+0000083380 00000 n 
+0000089617 00000 n 
+0000089639 00000 n 
+0000093055 00000 n 
+0000093077 00000 n 
+0000093821 00000 n 
+0000093842 00000 n 
+0000094585 00000 n 
+0000095124 00000 n 
+0000096353 00000 n 
+0000096865 00000 n 
+0000097097 00000 n 
+0000098096 00000 n 
 trailer
-<<
-/Size 93
-/Root 91 0 R
-/Info 92 0 R
-/ID [<B55F53A3ADE1C4CE70EEAE2114A29330> <B55F53A3ADE1C4CE70EEAE2114A29330>]
+<< /Size 125 /Root 1 0 R /Info 2 0 R
+/ID [(£ÛÎ_>¢ù¯\(MBο^þç)(£ÛÎ_>¢ù¯\(MBο^þç)]
 >>
 startxref
-382725
+101703
 %%EOF

Modified: puppetor/trunk/doc/howto.tex
===================================================================
--- puppetor/trunk/doc/howto.tex	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/doc/howto.tex	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,6 +1,7 @@
 \documentclass{article}%
 \usepackage{graphicx}%
 \usepackage{url}%
+\usepackage{msc}%
 \begin{document}%
 %
 \author{karsten.loesing at gmx.net}%
@@ -25,8 +26,7 @@
 An application that makes use of this framework starts with setting up a set of
 pre-defined Tor processes: proxy, router, and directory. Though these
 configurations should work in most settings, they can be altered by adding or
-removing configuration entries.\footnote{This is not implemented yet, but it 
-should not be too hard to do it.} After deciding whether the processes shall
+removing configuration entries. After deciding whether the processes shall
 either create a private Tor network, or connect to the public Tor network,
 processes are started. Now the application can start clients and servers and
 perform requests using the local processes. In doing so, it can measure time
@@ -425,7 +425,7 @@
 
 \begin{verbatim}
 Request took 13808 millis from client to server!
-Request took 14851 millis for the rount-trip and 1043 millis from server to client!
+Request took 14851 millis for the round-trip and 1043 millis from server to client!
 Exiting...
 \end{verbatim}
 
@@ -544,53 +544,32 @@
 
 \textbf{WARNING: This example does not work with an unmodified Tor!}
 
-The purpose of this example is to demonstrate how the distributed storage for
-hidden service descriptors as described in proposal 114 works. It requires a
-modified Tor executable that can be compiled using the sources in
-\url{https://tor-svn.freehaven.net/svn/tor/branches/114-dist-storage}. For more
-information on the design of the distributed storage see proposal 114.
+The purpose of this example is the automatic validation of the distributed
+storage for hidden service descriptors as described in proposal 114.
 
-The network configuration consists of three router nodes, which are used for
-performing onion routing. Two of them are used as proxies, and the third is
-used as hidden service directory. Further, there are two directory nodes that
-are also hidden service directories, a client, and a server (figure \ref{ex5}
-depicts the network setting):
-\begin{itemize}
-\item Router \texttt{router1} with control port 7021, SOCKS port 7022, OR port
-7023, and dir port 7024.
-\item Router \texttt{router2} with control port 7031, SOCKS port 7032, OR port
-7033, and dir port 7034, acting as hidden service directory.
-\item Router \texttt{router3} with control port 7041, SOCKS port 7042, OR port
-7043, and dir port 7044.
-\item Directory \texttt{dir1} with control port 7051, SOCKS port 7052, OR port
-7053, and dir port 7054, acting as hidden service directory.
-\item Directory \texttt{dir2} with control port 7061, SOCKS port 7062, OR port
-7063, and dir port 7064, acting as hidden service directory.
-\item Server that listens on port 7025 and is registered as hidden server at
-\texttt{router1}.
-\item Client that performs requests using SOCKS port 7042, i.e. over
-\texttt{router3}.
-\end{itemize}
+When running, the example starts a network of local Tor processes, consisting
+of 2 directory nodes and 9 periodically changing onion routers, some of them
+(not the initial nodes, but those nodes replacing them) with attached hidden
+services. Each hour, one node is stopped and a new node is started, so that the
+population size stays the same.
 
-\begin{figure}
-\includegraphics[width=\textwidth]{example.png}
-\label{ex5}
-\caption{Network setting of example 5.}
-\end{figure}
+The automatic validation performs four measurements:
 
-A typical output of example 5 might look like the following:
+\begin{enumerate}
+\item Are the online statuses of hidden service directories propagated to all
+running nodes successfully, and how long does propagation take?
+\item The same measurement with offline statuses.
+\item Are hidden service descriptors stored on the correct, responsible hidden
+service directories, and how long does propagation take?
+\item Are hidden service requests successful within a given timeout?
+\end{enumerate}
 
-\begin{verbatim}
-Successfully started nodes!
-Successfully built circuits!
-Waiting for 1 minute...
-Waiting for 30 seconds...
-APPLICATION_SENDING_REQUEST
-APPLICATION_REQUEST_RECEIVED
-APPLICATION_REPLY_RECEIVED
-APPLICATION_REQUESTS_PERFORMED
-Exiting...
-\end{verbatim}
+The results of these measurements are written as comma-separated values to the
+four files \texttt{online-propagation}, \texttt{offline-propagation},
+\texttt{descriptor-propagation}, and \texttt{hidden-service-requests} in the
+working directory of the test run. Successful measurements are written as the
+number of seconds that the measurement took, failures are encoded as
+\texttt{-1}, and aborted measurements are dropped.
 
 \section{Architecture}
 
@@ -607,6 +586,121 @@
   \item Dir port
 \end{enumerate}
 
+\section{Events and messages for hidden services}
+
+PuppeTor contains a number of pre-defined event types to observe how Tor behaves
+when setting up and accessing a hidden service. Therefore, PuppeTor parses the
+log statements coming from all started Tor processes and decides whether to fire
+an event or not. All necessary log statements are contained in the current Tor
+trunk on log level \texttt{INFO} or higher. Further event types can be added by
+an application.\footnote{However, those new event types need to be mapped to
+pre-defined event types, because there is no possibility to extend enums at
+run-time. Or is there?} Figure \ref{setup} shows the events and exchanged
+messages for setting up a hidden service, figure \ref{download} the descriptor
+download, and figure \ref{connect} the connection establishment.
+
+\begin{figure}
+\caption{Hidden service setup\label{setup}}
+\begin{msc}{Hidden service setup}
+\declinst{a}{Alice's OP}{}
+\declinst{r}{Rendezvous Point}{}
+\declinst{d}{Dir/HSDir}{}
+\declinst{i}{Introduction Point}{}
+\declinst{b}{Bob's OP}{}
+\action{BOB\_BUILT\_INTRO\_CIRC\_SENDING\_ESTABLISH\_INTRO}{b}
+\nextlevel[2]
+\mess{ESTABLISH\_INTRO}{b}{i}[1]
+\nextlevel[2]
+\action{IPO\_RECEIVED\_ESTABLISH\_INTRO\_SENDING\_INTRO\_ESTABLISHED}{i}
+\nextlevel[2]
+\mess{INTRO\_ESTABLISHED}{i}{b}[1]
+\nextlevel[2]
+\action{BOB\_INTRO\_ESTABLISHED\_RECEIVED}{b}
+\nextlevel[2]
+\action{BOB\_SENDING\_PUBLISH\_DESC}{b}
+\nextlevel[2]
+\mess{POST}{b}{d}[1]
+\nextlevel[2]
+\action{DIR\_PUBLISH\_DESC\_RECEIVED}{d}
+\nextlevel[2]
+\mess{OK}{d}{b}[1]
+\nextlevel[2]
+\action{BOB\_DESC\_PUBLISHED\_RECEIVED}{b}
+\nextlevel[2]
+\end{msc}
+\end{figure}
+
+\begin{figure}
+\caption{Hidden service decriptor download\label{download}}
+\begin{msc}{Hidden service decriptor download}
+\declinst{a}{Alice's OP}{}
+\declinst{r}{Rendezvous Point}{}
+\declinst{d}{Dir/HSDir}{}
+\declinst{i}{Introduction Point}{}
+\declinst{b}{Bob's OP}{}
+\action{ALICE\_ONION\_REQUEST\_RECEIVED}{a}
+\nextlevel[2]
+\action{ALICE\_SENDING\_FETCH\_DESC}{a}
+\nextlevel[2]
+\mess{GET}{a}{d}[1]
+\nextlevel[2]
+\action{DIR\_FETCH\_DESC\_RECEIVED}{d}
+\nextlevel[2]
+\mess{OK}{d}{a}[1]
+\nextlevel[2]
+\action{ALICE\_DESC\_FETCHED\_RECEIVED}{a}
+\nextlevel[2]
+\end{msc}
+\end{figure}
+
+\begin{figure}
+\caption{Hidden service connection establishment\label{connect}}
+\begin{msc}{Hidden service connection establishment}
+\declinst{a}{Alice's OP}{}
+\declinst{r}{Rendezvous Point}{}
+\declinst{d}{Dir/HSDir}{}
+\declinst{i}{Introduction Point}{}
+\declinst{b}{Bob's OP}{}
+\action{ALICE\_BUILT\_REND\_CIRC\_SENDING\_ESTABLISH\_RENDEZVOUS}{a}
+\nextlevel[2]
+\mess{ESTABLISH\_RENDEZVOUS}{a}{r}[1]
+\nextlevel[2]
+\action{RPO\_RECEIVED\_ESTABLISH\_RENDEZVOUS\_SENDING\_RENDEZVOUS\_ESTABLISHED}{r}
+\nextlevel[2]
+\mess{RENDEZVOUS\_ESTABLISHED}{r}{a}[1]
+\nextlevel[2]
+\action{ALICE\_RENDEZVOUS\_ESTABLISHED\_RECEIVED}{a}
+\nextlevel[2]
+\action{ALICE\_BUILT\_INTRO\_CIRC}{a}
+\nextlevel[2]
+\action{ALICE\_SENDING\_INTRODUCE1}{a}
+\nextlevel[2]
+\mess{INTRODUCE1}{a}{i}[1]
+\nextlevel[2]
+\action{IPO\_RECEIVED\_INTRODUCE1\_SENDING\_INTRODUCE2\_AND\_INTRODUCE\_ACK}{i}
+\nextlevel[2]
+\mess{INTRODUCE2}{i}{b}[1]
+\mess{INTRODUCE\_ACK}{i}{a}[1]
+\nextlevel[2]
+\action{ALICE\_INTRODUCE\_ACK\_RECEIVED}{a}
+\action{BOB\_INTRODUCE2\_RECEIVED}{b}
+\nextlevel[2]
+\action{BOB\_BUILT\_REND\_CIRC\_SENDING\_RENDEZVOUS1}{b}
+\nextlevel[2]
+\mess{RENDEZVOUS1}{b}{r}[1]
+\nextlevel[2]
+\action{RPO\_RECEIVING\_RENDEZVOUS1\_SENDING\_RENDEZVOUS2}{r}
+\nextlevel[2]
+\mess{RENDEZVOUS2}{r}{a}[1]
+\nextlevel[2]
+\action{ALICE\_RENDEZVOUS2\_RECEIVED\_APP\_CONN\_OPENED}{a}
+\nextlevel[2]
+\action{BOB\_APP\_CONN\_OPENED}{b}
+\nextlevel[2]
+\nextlevel
+\end{msc}
+\end{figure}
+
 \section{Known issues}
 
 There is already a small list of problems and open questions that require more

Deleted: puppetor/trunk/license
===================================================================
--- puppetor/trunk/license	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/license	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,66 +0,0 @@
-===============================================================================
-PuppeTor - A Java-based Tor Simulator - is distributed under this license:
-
-Copyright (c) 2007, Karsten Loesing
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
-    * Neither the names of the copyright owners nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-===============================================================================
-The Tor controller demonstration code is distributed under this license:
-
-Copyright (c) 2005, Nick Mathewson, Roger Dingledine
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
-    * Neither the names of the copyright owners nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Deleted: puppetor/trunk/readme
===================================================================
--- puppetor/trunk/readme	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/readme	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,8 +0,0 @@
-This is a Java framework that facilitates the configuration of a set of local
-Tor processes and the execution of automatic tests based on these processes. The
-intention is to make it easier for developers to analyze Tor's behavior in
-arbitrary network settings and to measure the effects of changes to the Tor
-source code. Due to the automation of configuration and execution, these
-experiments can be done in an unsupervised batch fashion.
-
-For more information, read the how-to document in doc/howto.pdf .

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -25,11 +25,11 @@
 	 * 
 	 * <p>
 	 * For each sent request the application fires an
-	 * <event>Event.APPLICATION_SENDING_REQUEST</code> event. On receiving a
-	 * reply it fires an event of type <code>Event.APPLICATION_REPLY_RECEIVED</code>,
-	 * if a request is not successful or times out, an <code>Event.APPLICATION_GAVE_UP_REQUEST</code>
+	 * <event>EventType.APPLICATION_SENDING_REQUEST</code> event. On receiving
+	 * a reply it fires an event of type <code>EventType.APPLICATION_REPLY_RECEIVED</code>,
+	 * if a request is not successful or times out, an <code>EventType.APPLICATION_GAVE_UP_REQUEST</code>
 	 * event is fired. After all requests have been performed (either
-	 * successfully, or not) an event of type <code>Event.APPLICATION_REQUESTS_PERFORMED</code>
+	 * successfully, or not) an event of type <code>EventType.APPLICATION_REQUESTS_PERFORMED</code>
 	 * is fired.
 	 * </p>
 	 * 

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Event.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Event.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Event.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,87 +1,47 @@
-package de.uniba.wiai.lspi.puppetor;
-
-/**
- * An <code>Event</code> is created for every state change of an asynchronous
- * system component, e.g. a Tor process or a client/server application running
- * as thread in the background. In contrast to <code>NodeState</code> or
- * <code>NetworkState</code> an <code>Event</code> cannot be a pre- or
- * postconditions for a method invocation. There is no prescribed order in which
- * events are fired by a certain process or application. Some events can be
- * fired only once, others possibly multiple times. All management operations
- * for events are contained in the <code>EventManager</code>.
- * 
- * TODO change from enum to hierarchie of interfaces/classes, because enums do
- * not support a type hierarchie which would be very useful!
- * 
- * TODO add methods and attributes to events to include additional information
- * (e.g. time of occurence)!
- * 
- * @author kloesing
- */
-public enum Event {
-
-	/**
-	 * The node which fires this event has successfully opened a circuit. This
-	 * event can only be fired once.
-	 */
-	NODE_CIRCUIT_OPENED,
-
-	/**
-	 * The node which fires this event has opened its control port. This event
-	 * can only be fired once.
-	 */
-	NODE_CONTROL_PORT_OPENED,
-
-	/**
-	 * The node which fires this event has successfully published a rendezvous
-	 * service descriptor. This event can be fired multiple times.
-	 */
-	NODE_RSD_PUBLISHED,
-
-	/**
-	 * The network fires this event when all nodes have opened their control
-	 * ports. This event can only be fired once.
-	 */
-	NETWORK_CONTROL_PORTS_OPENED,
-
-	/**
-	 * The network fires this event when all nodes have successfully opened a
-	 * circuit. This event can only be fired once.
-	 */
-	NETWORK_CIRCUITS_ESTABLISHED,
-
-	/**
-	 * The client application which fires this event has received a reply to a
-	 * previously sent request. This event can be fired multiple times.
-	 */
-	APPLICATION_REPLY_RECEIVED,
-
-	/**
-	 * The client application which fires this event has sent a request. This
-	 * event can be fired multiple times.
-	 */
-	APPLICATION_SENDING_REQUEST,
-
-	/**
-	 * The server application which fires this event has received a request and
-	 * sent a reply to it. This event can be fired multiple times.
-	 */
-	APPLICATION_REQUEST_RECEIVED,
-
-	/**
-	 * The client application which fires this event has given up waiting for
-	 * the reply to a previously sent request. This event can be fired multiple
-	 * times.
-	 */
-	APPLICATION_GAVE_UP_REQUEST,
-
-	/**
-	 * The client application which fires this event has completed a series of
-	 * requests, whether they were successful or not. This event can be fired
-	 * multiple times. TODO Can it really be fired multiple times? Is it
-	 * possible to send multiple request series from the same client? Should it
-	 * be possible?
-	 */
-	APPLICATION_REQUESTS_PERFORMED
-
-}
+package de.uniba.wiai.lspi.puppetor;
+
+/**
+ * An <code>Event</code> is created for every state change of an asynchronous
+ * system component, e.g. a Tor process or a client/server application running
+ * as thread in the background. In contrast to <code>NodeState</code> or
+ * <code>NetworkState</code> an <code>Event</code> cannot be a pre- or
+ * postconditions for a method invocation. There is no prescribed order in which
+ * events are fired by a certain process or application. Some events can be
+ * fired only once, others possibly multiple times. All management operations
+ * for events are contained in the <code>EventManager</code>.
+ * 
+ * @author kloesing
+ */
+public interface Event {
+
+	/**
+	 * Returns the source of this event, which can be a Tor process or a
+	 * client/server application running as thread in the background.
+	 * 
+	 * @return The event source.
+	 */
+	public abstract EventSource getSource();
+
+	/**
+	 * Returns the type of this event.
+	 * 
+	 * @return The event type.
+	 */
+	public abstract EventType getType();
+
+	/**
+	 * Returns the original message that lead to firing this event.
+	 * 
+	 * @return The original message.
+	 */
+	public abstract String getMessage();
+
+	/**
+	 * Returns the occurrence time of this event, which is either the parsed
+	 * time from a Tor log statement, or the current system time when a
+	 * client/server application fired this event.
+	 * 
+	 * @return The occurrence time.
+	 */
+	public abstract long getOccurrenceTime();
+}

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventManager.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventManager.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventManager.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -45,6 +45,23 @@
 			EventListener listener);
 
 	/**
+	 * Registers the given <code>listener</code> as event listener for future
+	 * events originating from any source. This method can be invoked in any
+	 * node or network state.
+	 * 
+	 * @param listener
+	 *            The listener that wants to be notified about events from the
+	 *            given <code>source</code>. If the <code>listener</code>
+	 *            is already registered for the same <code>source</code>,
+	 *            nothing happens, i.e. the <code>listener</code> will not
+	 *            receive multiple invocations for the same event. May not be
+	 *            <code>null</code>.
+	 * @throws IllegalArgumentException
+	 *             Thrown if <code>null</code> is passed for the parameter.
+	 */
+	public abstract void addEventListener(EventListener listener);
+
+	/**
 	 * Returns the list of all previously observed events from the given
 	 * <code>source</code>.
 	 * 
@@ -74,7 +91,7 @@
 	 * @return <code>true</code> if the event has been observed from the
 	 *         source before, <code>false</code> otherwise.
 	 */
-	public abstract boolean hasEventOccured(EventSource source, Event event);
+	public abstract boolean hasEventOccured(EventSource source, EventType event);
 
 	/**
 	 * Removes the given <code>listener</code> as event listener from all
@@ -111,7 +128,7 @@
 	 *             Thrown if <code>null</code> is passed for either of the
 	 *             parameters.
 	 */
-	public abstract void waitForAnyOccurence(EventSource source, Event event);
+	public abstract void waitForAnyOccurence(EventSource source, EventType event);
 
 	/**
 	 * Checks if the given <code>event</code> has been observed from the given
@@ -138,7 +155,7 @@
 	 *             parameters.
 	 */
 	public abstract boolean waitForAnyOccurence(EventSource source,
-			Event event, long maximumTimeToWaitInMillis);
+			EventType event, long maximumTimeToWaitInMillis);
 
 	/**
 	 * Blocks the invoking thread until the next <code>event</code> is fired
@@ -158,7 +175,8 @@
 	 *             Thrown if <code>null</code> is passed for either of the
 	 *             parameters.
 	 */
-	public abstract void waitForNextOccurence(EventSource source, Event event);
+	public abstract void waitForNextOccurence(EventSource source,
+			EventType event);
 
 	/**
 	 * Blocks the invoking thread until the next <code>event</code> is fired
@@ -185,6 +203,21 @@
 	 *             parameters.
 	 */
 	public abstract boolean waitForNextOccurence(EventSource source,
-			Event event, long maximumTimeToWaitInMillis);
+			EventType event, long maximumTimeToWaitInMillis);
 
+	/**
+	 * Registers a new event type by passing a pattern string that can be
+	 * applied to a regular expression when parsing Tor log statements. This is
+	 * useful for log statements that are only included in modified Tor
+	 * versions.
+	 * 
+	 * @param patternString
+	 *            The pattern string that will be used for parsing Tor log
+	 *            statements; the syntax corresponds to java.util.regex.Pattern.
+	 * @param eventType
+	 *            The event type that will be fired when a log statement was
+	 *            parsed that includes the given pattern.
+	 */
+	public abstract void registerEventTypePattern(String patternString,
+			EventType eventType);
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventSource.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventSource.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventSource.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,11 +1,16 @@
 package de.uniba.wiai.lspi.puppetor;
 
 /**
- * This marker interface is the super-interface of those interfaces that can be
- * the source for events.
+ * Super-interface of those interfaces that can be the source for events.
  * 
  * @author kloesing
  */
 public interface EventSource {
-	// this interface contains no methods, because it is a marker interface.
+
+	/**
+	 * TODO document me
+	 * 
+	 * @return
+	 */
+	public abstract String getName();
 }

Added: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java	                        (rev 0)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -0,0 +1,248 @@
+package de.uniba.wiai.lspi.puppetor;
+
+/**
+ * The possible types of events that are fired on a state change of an
+ * asynchronous system component, e.g. a Tor process or a client/server
+ * application running as thread in the background.
+ * 
+ * @author kloesing
+ */
+public enum EventType {
+
+	/**
+	 * The node has reported that its routing table for v2 hidden services has
+	 * changed; this event can only be parsed from a log statement in a modified
+	 * Tor!
+	 */
+	NODE_ROUTING_TABLE_CHANGED,
+
+	/**
+	 * The node was started and we managed to connect to its control port; this
+	 * event is fired internally and not parsed from a log statement from Tor.
+	 */
+	NODE_STARTED,
+
+	/**
+	 * The node has opened its control port; this event is parsed from a log
+	 * statement in connection_create_listener().
+	 */
+	NODE_CONTROL_PORT_OPENED,
+
+	/**
+	 * The node which has successfully opened a circuit; this event is parsed
+	 * from a log statement in circuit_send_next_onion_skin().
+	 */
+	NODE_CIRCUIT_OPENED,
+
+	/**
+	 * The node was stopped; this event is fired internally and not parsed from
+	 * a log statement from Tor.
+	 */
+	NODE_STOPPED,
+
+	/**
+	 * Bob has built a circuit to an introduction point and sends an
+	 * ESTABLISH_INTRO cell; this event is parsed from a log statement in
+	 * rend_service_intro_has_opened().
+	 */
+	BOB_BUILT_INTRO_CIRC_SENDING_ESTABLISH_INTRO,
+
+	/**
+	 * Bob has received an INTRO_ESTABLISHED cell, i.e. a node has confirmed to
+	 * work as introduction point; this event is parsed from a log statement in
+	 * rend_service_intro_established().
+	 */
+	BOB_INTRO_ESTABLISHED_RECEIVED,
+
+	/**
+	 * Bob posts a hidden service descriptor to the directory servers (or to
+	 * hidden service directories in a modified Tor); this event is parsed from
+	 * a log statement in upload_service_descriptor().
+	 */
+	BOB_SENDING_PUBLISH_DESC,
+
+	/**
+	 * Bob received a response from a directory server (or from a hidden service
+	 * directory in a modified Tor) to a previous publish request; this event is
+	 * parsed from a log statement in connection_dir_client_reached_eof().
+	 */
+	BOB_DESC_PUBLISHED_RECEIVED,
+
+	/**
+	 * Bob has received an INTRODUCE2 cell, i.e. a node wants to establish a
+	 * connection, and will now try to establish a circuit to the client's
+	 * rendezvous point; this event is parsed from a log statement in
+	 * rend_service_introduce().
+	 */
+	BOB_INTRODUCE2_RECEIVED,
+
+	/**
+	 * Bob has built a circuit to a rendezvous point and sends an RENDEZVOUS1
+	 * cell; this event is parsed from a log statement in
+	 * rend_service_rendezvous_has_opened().
+	 */
+	BOB_BUILT_REND_CIRC_SENDING_RENDEZVOUS1,
+
+	/**
+	 * Bob opens a connection to the actual hidden server; this event is parsed
+	 * from a log statement in connection_exit_begin_conn().
+	 */
+	BOB_APP_CONN_OPENED,
+
+	/**
+	 * Alice has received an onion request; this event is parsed from a log
+	 * statement in connection_ap_handshake_rewrite_and_attach().
+	 */
+	ALICE_ONION_REQUEST_RECEIVED,
+
+	/**
+	 * Alice sends a fetch request for a hidden service descriptor to a
+	 * directory server; this event is parsed from a log statement in
+	 * rend_client_refetch_renddesc().
+	 */
+	ALICE_SENDING_FETCH_DESC,
+
+	/**
+	 * Alice receives a reply to a previous fetch request for a hidden service
+	 * descriptors from a directory server; this event is parsed from a log
+	 * statement in connection_dir_client_reached_eof().
+	 */
+	ALICE_DESC_FETCHED_RECEIVED,
+
+	/**
+	 * Alice has built a circuit to a rendezvous point and sends an
+	 * ESTABLISH_RENDEZVOUS cell; this event is parsed from a log statement in
+	 * rend_client_send_establish_rendezvous().
+	 */
+	ALICE_BUILT_REND_CIRC_SENDING_ESTABLISH_RENDEZVOUS,
+
+	/**
+	 * Alice receives a RENDEZVOUS_ESTABLISHED cell from a rendezvous point;
+	 * this event is parsed from a log statement in
+	 * rend_client_rendezvous_acked().
+	 */
+	ALICE_RENDEZVOUS_ESTABLISHED_RECEIVED,
+
+	/**
+	 * Alice has built a circuit to an introduction point (which does not
+	 * automatically lead to sending an INTRODUCE1 cell, because the rendezvous
+	 * circuit might not be ready); this event is parsed from a log statement in
+	 * rend_client_introcirc_has_opened().
+	 */
+	ALICE_BUILT_INTRO_CIRC,
+
+	/**
+	 * Alice sends an INTRODUCE1 cell to an introduction point; this event is
+	 * parsed from a log statement in rend_client_send_introduction().
+	 */
+	ALICE_SENDING_INTRODUCE1,
+
+	/**
+	 * Alice has received an INTRODUCE_ACK cell as an acknowledgement to the
+	 * previous INTRODUCE1 cell; this event is parsed from a log statement in
+	 * rend_client_introduction_acked().
+	 */
+	ALICE_INTRODUCE_ACK_RECEIVED,
+
+	/**
+	 * Alice has received a RENDEZVOUS2 cell and can now open an application
+	 * connection to the client; this event is parsed from a log statement in
+	 * rend_client_receive_rendezvous().
+	 */
+	ALICE_RENDEZVOUS2_RECEIVED_APP_CONN_OPENED,
+
+	/**
+	 * // directory_handle_command_post(): rewritten url as //
+	 * '/tor/rendezvous/publish2'.
+	 * 
+	 * TODO document me
+	 */
+	// HSDIR_PUBLISH_DESC_RECEIVED,
+	/**
+	 * // directory_handle_command_get(): rewritten url as //
+	 * '/tor/rendezvous2/yniedqlk7yhfdlimcbimsyhtchxoer3t'
+	 * 
+	 * TODO document me
+	 */
+	// HSDIR_FETCH_DESC_RECEIVED,
+	/**
+	 * The hidden service directory has stored a v2 descriptor; this event can
+	 * only be parsed from a log statement in a modified Tor!
+	 */
+	HSDIR_DESC_STORED,
+
+	/**
+	 * The directory server has received a descriptor post request; this event
+	 * is parsed from a log statement in directory_handle_command_post().
+	 */
+	DIR_PUBLISH_DESC_RECEIVED,
+
+	/**
+	 * The directory server has received a descriptor fetch request; this event
+	 * is parsed from a log statement in directory_handle_command_get().
+	 */
+	DIR_FETCH_DESC_RECEIVED,
+
+	/**
+	 * The node received an ESTABLISH_INTRO cell, i.e. was requested to work as
+	 * introduction point, and replies with an INTRO_ESTABLISHED cell; this
+	 * event is parsed from a log statement in rend_mid_establish_intro().
+	 */
+	IPO_RECEIVED_ESTABLISH_INTRO_SENDING_INTRO_ESTABLISHED,
+
+	/**
+	 * The introduction point received an INTRODUCE1 cell and reacts by sending
+	 * an INTRODUCE2 cell to Bob and an INTRODUCE_ACK cell to Alice; this event
+	 * is parsed from a log statement in rend_mid_introduce().
+	 */
+	IPO_RECEIVED_INTRODUCE1_SENDING_INTRODUCE2_AND_INTRODUCE_ACK,
+
+	/**
+	 * The node received an ESTABLISH_RENDEZVOUS cell, i.e. was requested to
+	 * work as rendezvous point, and replies with an RENDEZVOUS_ESTABLISHED
+	 * cell; this event is parsed from a log statement in
+	 * rend_mid_establish_rendezvous().
+	 */
+	RPO_RECEIVED_ESTABLISH_RENDEZVOUS_SENDING_RENDEZVOUS_ESTABLISHED,
+
+	/**
+	 * The rendezvous point received a RENDEZVOUS1 cell and reacts by sending a
+	 * RENDEZVOUS2 cell to Alice; this event is parsed from a log statement in
+	 * rend_mid_rendezvous().
+	 */
+	RPO_RECEIVING_RENDEZVOUS1_SENDING_RENDEZVOUS2,
+
+	/**
+	 * The client application is sending a request; this event is fired
+	 * internally and not parsed from a log statement from Tor.
+	 */
+	CLIENT_SENDING_REQUEST,
+
+	/**
+	 * The client application has received a reply to a previously sent request;
+	 * this event is fired internally and not parsed from a log statement from
+	 * Tor.
+	 */
+	CLIENT_REPLY_RECEIVED,
+
+	/**
+	 * The client application has given up waiting for the reply to a previously
+	 * sent request; this event is fired internally and not parsed from a log
+	 * statement from Tor.
+	 */
+	CLIENT_GAVE_UP_REQUEST,
+
+	/**
+	 * The client application has completed a series of requests, whether they
+	 * were successful or not; this event is fired internally and not parsed
+	 * from a log statement from Tor.
+	 */
+	CLIENT_REQUESTS_PERFORMED,
+
+	/**
+	 * The server application has received a request and sent a reply to it;
+	 * this event is fired internally and not parsed from a log statement from
+	 * Tor.
+	 */
+	SERVER_RECEIVING_REQUEST_SENDING_REPLY,
+}


Property changes on: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Network.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Network.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/Network.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,5 +1,7 @@
 package de.uniba.wiai.lspi.puppetor;
 
+import java.io.File;
+
 /**
  * A Network instance constitutes the central object of any test run and is
  * aware of the node configuration. It creates all nodes for this configuration
@@ -137,8 +139,7 @@
 	/**
 	 * Creates a new <code>ProxyNode</code> and adds it to the
 	 * <code>network</code>, but does not yet write its configuration to disk
-	 * or start the corresponding Tor process. This operation can only be
-	 * invoked, if network status is <code>NetworkState.CONFIGURING_NODES</code>.
+	 * or start the corresponding Tor process.
 	 * 
 	 * @param nodeName
 	 *            The name for this node, which is only used as name for the
@@ -153,9 +154,6 @@
 	 *            for incoming SOCKS requests. May not be negative or greater
 	 *            than 65535.
 	 * @return Reference to the created proxy node.
-	 * @throws IllegalStateException
-	 *             Thrown if network is not in state
-	 *             <code>NetworkState.CONFIGURING_NODES</code>.
 	 * @throws IllegalArgumentException
 	 *             Thrown if an invalid value is given for either of the
 	 *             parameters.
@@ -166,8 +164,6 @@
 	/**
 	 * Creates a new router node and adds it to the network, but does not yet
 	 * write its configuration to disk or start the corresponding Tor process.
-	 * This operation can only be invoked, if network status is
-	 * <code>NetworkState.CONFIGURING_NODES</code>.
 	 * 
 	 * @param nodeName
 	 *            The name for this node, which is used as name for the working
@@ -191,9 +187,6 @@
 	 *            the mirrored directory. May not be negative or greater than
 	 *            65535.
 	 * @return Reference to the created router node.
-	 * @throws IllegalStateException
-	 *             Thrown if network is not in state
-	 *             <code>NetworkState.CONFIGURING_NODES</code>.
 	 * @throws IllegalArgumentException
 	 *             Thrown if an invalid value is given for either of the
 	 *             parameters.
@@ -281,10 +274,10 @@
 			throws TorProcessException;
 
 	/**
-	 * Attempts to shut down all nodes. The method blocks until all shutdown
-	 * requests have been sent and either returns, or throws the first exception
-	 * that has been observed when shutting down nodes. The method can be
-	 * assumed to return very quickly. This operation can only be invoked, if
+	 * Attempts to shut down all running nodes. The method blocks until all
+	 * shutdown requests have been sent and either returns, or throws the first
+	 * exception that has been observed when shutting down nodes. The method can
+	 * be assumed to return very quickly. This operation can only be invoked, if
 	 * network status is <code>NetworkState.NODES_STARTED</code>.
 	 * 
 	 * @throws IllegalStateException
@@ -339,4 +332,12 @@
 	 *             working directories.
 	 */
 	public abstract void writeConfigurations() throws TorProcessException;
+	
+	/**
+	 * Returns the working directory of this network configuration which is in
+	 * test-env/networkName/.
+	 * 
+	 * @return Working directory of this network.
+	 */
+	public abstract File getWorkingDirectory();
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NetworkState.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NetworkState.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NetworkState.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -3,12 +3,12 @@
 /**
  * The <code>NetworkState</code> constitutes the single state of a network
  * that is the result of the <code>NodeState</code>s of all nodes in the
- * network. In contrast to <code>Event</code> the network (and node) states
- * depend only on the methods that have been invoked on these objects, and not
- * on asynchronous state changes. Most operations of <code>Network</code>
- * require a certain <code>NetworkState</code> as precondition and may ensure
- * another <code>NetworkState</code> as postcondition. There is a prescribed
- * order of states.
+ * network. In contrast to <code>EventType</code> the network (and node)
+ * states depend only on the methods that have been invoked on these objects,
+ * and not on asynchronous state changes. Most operations of
+ * <code>Network</code> require a certain <code>NetworkState</code> as
+ * precondition and may ensure another <code>NetworkState</code> as
+ * postcondition. There is a prescribed order of states.
  * 
  * @author kloesing
  */

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeState.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeState.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeState.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -2,12 +2,12 @@
 
 /**
  * The <code>NodeState</code> constitutes the state of a single Tor node. In
- * contrast to <code>Event</code> the node (and network) states depend only on
- * the methods that have been invoked on these objects, and not on asynchronous
- * state changes. Most operations of <code>ProxyNode</code> and its subclasses
- * require a certain <code>NodeState</code> as precondition and may ensure
- * another <code>NodeState</code> as postcondition. There is a prescribed
- * order of states.
+ * contrast to <code>EventType</code> the node (and network) states depend
+ * only on the methods that have been invoked on these objects, and not on
+ * asynchronous state changes. Most operations of <code>ProxyNode</code> and
+ * its subclasses require a certain <code>NodeState</code> as precondition and
+ * may ensure another <code>NodeState</code> as postcondition. There is a
+ * prescribed order of states.
  * 
  * @author kloesing
  */

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ProxyNode.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ProxyNode.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ProxyNode.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -187,4 +187,11 @@
 	 */
 	public abstract void writeConfiguration() throws TorProcessException;
 
+	/**
+	 * Returns the SOCKS port of this node.
+	 * 
+	 * @return The SOCKS port of this node.
+	 */
+	public abstract int getSocksPort();
+
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/RouterNode.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/RouterNode.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/RouterNode.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -53,4 +53,14 @@
 	 */
 	public abstract String determineFingerprint() throws TorProcessException;
 
+	/**
+	 * Determines the base32-encoded fingerprint of this node.
+	 * 
+	 * @return The base32-encoded fingerprint of this node.
+	 * @throws TorProcessException
+	 *             Thrown if the fingerprint cannot be determined.
+	 */
+	public abstract String determineFingerprintBase32()
+			throws TorProcessException;
+
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -4,6 +4,7 @@
 import de.uniba.wiai.lspi.puppetor.Event;
 import de.uniba.wiai.lspi.puppetor.EventListener;
 import de.uniba.wiai.lspi.puppetor.EventManager;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.Network;
 import de.uniba.wiai.lspi.puppetor.NetworkFactory;
 import de.uniba.wiai.lspi.puppetor.TorProcessException;
@@ -65,11 +66,11 @@
 			private long before;
 
 			public void handleEvent(Event event) {
-				switch (event) {
-				case APPLICATION_SENDING_REQUEST:
+				switch (event.getType()) {
+				case CLIENT_SENDING_REQUEST:
 					before = System.currentTimeMillis();
 					break;
-				case APPLICATION_REPLY_RECEIVED:
+				case CLIENT_REPLY_RECEIVED:
 					System.out
 							.println("Request took "
 									+ (System.currentTimeMillis() - before)
@@ -88,8 +89,9 @@
 		client.performRequest(3, 20000, true);
 
 		// block this thread as long as client requests are running
-		manager.waitForAnyOccurence(client,
-				Event.APPLICATION_REQUESTS_PERFORMED);
+		manager
+				.waitForAnyOccurence(client,
+						EventType.CLIENT_REQUESTS_PERFORMED);
 
 		// wait a second before shutting down the proxy
 		try {

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -4,6 +4,7 @@
 import de.uniba.wiai.lspi.puppetor.Event;
 import de.uniba.wiai.lspi.puppetor.EventListener;
 import de.uniba.wiai.lspi.puppetor.EventManager;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.Network;
 import de.uniba.wiai.lspi.puppetor.NetworkFactory;
 import de.uniba.wiai.lspi.puppetor.RouterNode;
@@ -44,8 +45,7 @@
 		RouterNode router1 = network.createRouter("router1", 7021, 7022, 7023,
 				7024);
 		network.createRouter("router2", 7031, 7032, 7033, 7034);
-		network.createRouter("router3", 7041, 7042, 7043,
-				7044);
+		network.createRouter("router3", 7041, 7042, 7043, 7044);
 
 		// create two directory nodes with parameters (router name, control
 		// port, SOCKS port, OR port, dir port)
@@ -86,8 +86,8 @@
 
 		// wait for 3 minutes that the proxy has published its first RSD
 
-		if (!manager.waitForAnyOccurence(router1, Event.NODE_RSD_PUBLISHED,
-				3L * 60L * 1000L)) {
+		if (!manager.waitForAnyOccurence(router1,
+				EventType.BOB_DESC_PUBLISHED_RECEIVED, 3L * 60L * 1000L)) {
 			// failed to publish an RSD
 			System.out.println("Failed to publish an RSD!");
 			return;
@@ -123,8 +123,9 @@
 		client.performRequest(5, 45000, true);
 
 		// wait for request to be performed
-		manager.waitForAnyOccurence(client,
-				Event.APPLICATION_REQUESTS_PERFORMED);
+		manager
+				.waitForAnyOccurence(client,
+						EventType.CLIENT_REQUESTS_PERFORMED);
 
 		// shut down nodes
 		network.shutdownNodes();

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -4,6 +4,7 @@
 import de.uniba.wiai.lspi.puppetor.Event;
 import de.uniba.wiai.lspi.puppetor.EventListener;
 import de.uniba.wiai.lspi.puppetor.EventManager;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.Network;
 import de.uniba.wiai.lspi.puppetor.NetworkFactory;
 import de.uniba.wiai.lspi.puppetor.ProxyNode;
@@ -65,8 +66,8 @@
 		EventManager manager = network.getEventManager();
 
 		// wait for 3 minutes that the proxy has published its first RSD
-		if (!manager.waitForAnyOccurence(proxy1, Event.NODE_RSD_PUBLISHED,
-				3L * 60L * 1000L)) {
+		if (!manager.waitForAnyOccurence(proxy1,
+				EventType.BOB_DESC_PUBLISHED_RECEIVED, 3L * 60L * 1000L)) {
 
 			// failed to publish an RSD
 			System.out.println("Failed to publish an RSD!");
@@ -93,22 +94,22 @@
 			private long requestSentFromClient;
 
 			public void handleEvent(Event event) {
-				switch (event) {
-				case APPLICATION_SENDING_REQUEST:
-					requestSentFromClient = System.currentTimeMillis();
+				switch (event.getType()) {
+				case CLIENT_SENDING_REQUEST:
+					requestSentFromClient = event.getOccurrenceTime();
 					break;
-				case APPLICATION_REQUEST_RECEIVED:
-					requestReceivedAtServer = System.currentTimeMillis();
+				case SERVER_RECEIVING_REQUEST_SENDING_REPLY:
+					requestReceivedAtServer = event.getOccurrenceTime();
 					System.out.println("Request took "
 							+ (requestReceivedAtServer - requestSentFromClient)
 							+ " millis from client to server!");
 					break;
-				case APPLICATION_REPLY_RECEIVED:
+				case CLIENT_REPLY_RECEIVED:
 					System.out
 							.println("Request took "
-									+ (System.currentTimeMillis() - requestSentFromClient)
+									+ (event.getOccurrenceTime() - requestSentFromClient)
 									+ " millis for the round-trip and "
-									+ (System.currentTimeMillis() - requestReceivedAtServer)
+									+ (event.getOccurrenceTime() - requestReceivedAtServer)
 									+ " millis from server to client!");
 				}
 			}
@@ -125,8 +126,9 @@
 		client.performRequest(5, 45000, true);
 
 		// block this thread as long as client requests are running
-		manager.waitForAnyOccurence(client,
-				Event.APPLICATION_REQUESTS_PERFORMED);
+		manager
+				.waitForAnyOccurence(client,
+						EventType.CLIENT_REQUESTS_PERFORMED);
 
 		// shut down proxy
 		network.shutdownNodes();

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -48,13 +48,13 @@
 			private long circuitOpened = -1;
 
 			public void handleEvent(Event event) {
-				switch (event) {
+				switch (event.getType()) {
 				case NODE_CIRCUIT_OPENED:
 					if (circuitOpened == -1) {
 						circuitOpened = System.currentTimeMillis();
 					}
 					break;
-				case NODE_RSD_PUBLISHED:
+				case BOB_DESC_PUBLISHED_RECEIVED:
 					System.out.println("RSD published "
 							+ (System.currentTimeMillis() - circuitOpened)
 							+ " millis after first circuit was opened");

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/DistributedStorage.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/DistributedStorage.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/DistributedStorage.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,143 +1,1521 @@
-package de.uniba.wiai.lspi.puppetor.examples;
-
-import de.uniba.wiai.lspi.puppetor.ClientApplication;
-import de.uniba.wiai.lspi.puppetor.DirectoryNode;
-import de.uniba.wiai.lspi.puppetor.Event;
-import de.uniba.wiai.lspi.puppetor.EventListener;
-import de.uniba.wiai.lspi.puppetor.EventManager;
-import de.uniba.wiai.lspi.puppetor.Network;
-import de.uniba.wiai.lspi.puppetor.NetworkFactory;
-import de.uniba.wiai.lspi.puppetor.RouterNode;
-import de.uniba.wiai.lspi.puppetor.ServerApplication;
-import de.uniba.wiai.lspi.puppetor.TorProcessException;
-
-/**
- * Example for distributed storage of hidden service descriptors which
- * <b>require changes to the Tor sources as in SVN branch 114-dist-storage</b>.
- * 
- * @author kloesing
- */
-public class DistributedStorage {
-
-	/**
-	 * Sets up and runs the test.
-	 * 
-	 * @param args
-	 *            Command-line arguments (ignored).
-	 * @throws TorProcessException
-	 *             Thrown if there is a problem with the JVM-external Tor
-	 *             processes that we cannot handle.
-	 */
-	public static void main(String[] args) throws TorProcessException {
-
-		// create a network to initialize a test case
-		Network network = NetworkFactory.createNetwork("example5");
-
-		// create three router nodes with parameters (router name, control port,
-		// SOCKS port, OR port, dir mirror port)
-		RouterNode router1 = network.createRouter("router1", 7021, 7022, 7023,
-				7024);
-		RouterNode router2 = network.createRouter("router2", 7031, 7032, 7033,
-				7034);
-		RouterNode router3 = network.createRouter("router3", 7041, 7042, 7043,
-				7044);
-
-		// create two directory nodes with parameters (router name, control
-		// port, SOCKS port, OR port, dir port)
-		DirectoryNode dir1 = network.createDirectory("dir1", 7051, 7052, 7053,
-				7054);
-		DirectoryNode dir2 = network.createDirectory("dir2", 7061, 7062, 7063,
-				7064);
-
-		// let router1 only publish v2 descriptors
-		router1.addConfiguration("PublishHidServDescriptors 0");
-		router1.addConfiguration("PublishV2HidServDescriptors 1");
-
-		// let router3 only fetch v2 descriptors
-		router3.addConfiguration("FetchHidServDescriptors 0");
-		router3.addConfiguration("FetchV2HidServDescriptors 1");
-
-		// let three nodes act as hidden service directories
-		router2.addConfiguration("HSDir 1");
-		dir1.addConfiguration("HSDir 1");
-		dir2.addConfiguration("HSDir 1");
-
-		// add hidden service to the configuration of router1
-		router1.addHiddenService("hidServ1", 7025, 81);
-
-		// configure nodes of this network to be part of a private network
-		network.configureAsPrivateNetwork();
-
-		// write configuration of proxy node
-		network.writeConfigurations();
-
-		// start proxy node and wait until it has opened a circuit with a
-		// timeout of 5 seconds
-		if (!network.startNodes(5000)) {
-
-			// failed to start the proxy
-			System.out.println("Failed to start nodes!");
-			return;
-		}
-		System.out.println("Successfully started nodes!");
-
-		// hup until proxy has built circuits (8 retries, 10 seconds timeout
-		// each)
-		if (!network.hupUntilUp(8, 10000)) {
-
-			// failed to build circuits
-			System.out.println("Failed to build circuits!");
-			return;
-		}
-		System.out.println("Successfully built circuits!");
-
-		// let it run for 1 minute...
-		System.out.println("Waiting for 1 minute...");
-		try {
-			Thread.sleep(1L * 60L * 1000L);
-		} catch (InterruptedException e) {
-			// do nothing
-		}
-
-		// start server and listen
-		ServerApplication server = network.createServer("server", 7025);
-		server.listen();
-
-		// obtain onion address of hidden service
-		String onionAddress = router1.getOnionAddress("hidServ1", 2);
-
-		// create client and try to access it
-		ClientApplication client = network.createClient("client", onionAddress,
-				81, 7042);
-
-		// obtain reference to event manager to be able to respond to events
-		EventManager manager = network.getEventManager();
-
-		// create event listener to listen for events from our proxy
-		EventListener eventListener = new EventListener() {
-
-			public void handleEvent(Event event) {
-				System.out.println(event.toString());
-			}
-		};
-
-		// register event handler for events
-		manager.addEventListener(client, eventListener);
-		manager.addEventListener(server, eventListener);
-
-		client.performRequest(2, 10000, true);
-
-		// wait for some seconds
-		System.out.println("Waiting for 30 seconds...");
-		try {
-			Thread.sleep(30L * 1000L);
-		} catch (InterruptedException e) {
-			// do nothing
-		}
-
-		// shut down nodes
-		network.shutdownNodes();
-
-		System.out.println("Exiting...");
-	}
-}
+package de.uniba.wiai.lspi.puppetor.examples;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import de.uniba.wiai.lspi.puppetor.ClientApplication;
+import de.uniba.wiai.lspi.puppetor.DirectoryNode;
+import de.uniba.wiai.lspi.puppetor.Event;
+import de.uniba.wiai.lspi.puppetor.EventListener;
+import de.uniba.wiai.lspi.puppetor.EventManager;
+import de.uniba.wiai.lspi.puppetor.EventSource;
+import de.uniba.wiai.lspi.puppetor.EventType;
+import de.uniba.wiai.lspi.puppetor.Network;
+import de.uniba.wiai.lspi.puppetor.NetworkFactory;
+import de.uniba.wiai.lspi.puppetor.ProxyNode;
+import de.uniba.wiai.lspi.puppetor.RouterNode;
+import de.uniba.wiai.lspi.puppetor.TorProcessException;
+
+/**
+ * <p>
+ * Automatic validation of the distributed storage for hidden service
+ * descriptors as described in proposal 114. <b>WARNING: This example does not
+ * work with an unmodified Tor!</b>
+ * </p>
+ * 
+ * <p>
+ * When running, the example starts a network of local Tor processes, consisting
+ * of 2 directory nodes and 9 periodically changing onion routers, some of them
+ * (not the initial nodes, but those nodes replacing them) with attached hidden
+ * services.
+ * </p>
+ * 
+ * <p>
+ * The automatic validation performs four measurements:
+ * </p>
+ * 
+ * <ol>
+ * <li>Are the online statuses of hidden service directories propagated to all
+ * running nodes successfully, and how long does propagation take?</li>
+ * <li>The same measurement with offline statuses.</li>
+ * <li>Are hidden service descriptors stored on the correct, responsible hidden
+ * service directories, and how long does propagation take?</li>
+ * <li>Are hidden service requests successful within a given timeout?</li>
+ * </ol>
+ * 
+ * @author kloesing
+ */
+public class DistributedStorage {
+
+	/**
+	 * Observes a hidden service directory from starting it to shutting it down.
+	 * Waits for 24 hours after starting the node, so that it will be accepted
+	 * as hidden service directory by the directory authorities. Afterwards,
+	 * initiates an online propagation measurement for every node that is in the
+	 * network or that enters the network while the observed hidden service
+	 * directory is online. After going offline, initiates an offline
+	 * propagation measurement for every node that has previously accepted this
+	 * hidden service directory.
+	 */
+	private static class HiddenServiceDirectoryObserver extends Thread
+			implements EventListener {
+
+		/**
+		 * Is the hidden service directory online for at least 24 hours, so that
+		 * it will be listed by the directory authorities?
+		 */
+		private boolean twentyFourHoursUp;
+
+		/**
+		 * The Tor process behind the observed hidden service directory.
+		 */
+		private EventSource hsdNode;
+
+		/**
+		 * The node ID of the observed hidden service directory.
+		 */
+		private String nodeID;
+
+		/**
+		 * Set of nodes that have reported to accept this hidden service
+		 * directory.
+		 */
+		private Set<EventSource> nodesThatKnowMe = new HashSet<EventSource>();
+
+		/**
+		 * Creates a new observer instance, but does not start it yet.
+		 * 
+		 * @param hsdNode
+		 *            The Tor process behind the observed hidden service
+		 *            directory.
+		 * @param nodeID
+		 *            The node ID of the observed hidden service directory.
+		 */
+		private HiddenServiceDirectoryObserver(EventSource hsdNode,
+				String nodeID) {
+
+			// remember the args
+			this.nodeID = nodeID;
+			this.hsdNode = hsdNode;
+
+			// listen for events coming from my HSDir
+			manager.addEventListener(hsdNode, this);
+
+			// listen for starting/stopping nodes
+			manager.addEventListener(this);
+		}
+
+		@Override
+		public synchronized void run() {
+
+			// not yet accepted
+			this.twentyFourHoursUp = false;
+
+			// wait for 24 hours until hsdir is accepted by DAs
+			long startingTime = System.currentTimeMillis();
+			// for testing; change to 24 * 60 * 60 * 1000
+			long endOfWaiting = startingTime + 30 * 60 * 1000;
+			long now;
+			while ((now = System.currentTimeMillis()) < endOfWaiting) {
+				try {
+					wait(endOfWaiting - now);
+				} catch (InterruptedException e) {
+				}
+			}
+
+			// accepted
+			this.twentyFourHoursUp = true;
+
+			// add to set of running hidden service directories
+			globalRoutingTable.addHiddenServiceDirectory(this.nodeID,
+					this.hsdNode);
+
+			// measure how long the current nodes need to get aware of this
+			// hidden service directory
+			for (RouterNode router : runningRouters) {
+				new OnlinePropagationMeasurement(router, this.hsdNode,
+						this.nodeID).start();
+			}
+		}
+
+		public synchronized void handleEvent(Event event) {
+
+			if (!this.twentyFourHoursUp) {
+				// when the represented node is not running for at least 24
+				// hours, others would not consider it as hidden service
+				// directory and we cannot perform any useful measurements
+				return;
+			}
+
+			if (event.getType() == EventType.NODE_STARTED) {
+				// when another node is started, initiate measurement of the
+				// propagation time that this hiddden service directory is
+				// online
+				new OnlinePropagationMeasurement(event.getSource(),
+						this.hsdNode, this.nodeID).start();
+
+			} else if (event.getSource() == this.hsdNode
+					&& event.getType() == EventType.NODE_STOPPED) {
+				// when the represented node is stopped, initiate measurement of
+				// the propagation time that this hidden service directory is
+				// offline (any online propagation measurements that are still
+				// running will realize by themselves that they cannot succeed
+				// and will abort)
+				for (EventSource node : nodesThatKnowMe) {
+					if (node != this.hsdNode) {
+						new OfflinePropagationMeasurement(node, this.hsdNode,
+								this.nodeID).start();
+					}
+				}
+
+				// remove from set of running hidden service directories
+				globalRoutingTable.removeHiddenServiceDirectory(this.nodeID);
+
+				// stop listening for events
+				manager.removeEventListener(this);
+
+				// just in case that there is another event in the queue, don't
+				// handle it any more
+				this.twentyFourHoursUp = false;
+
+			} else if (event.getType() == EventType.NODE_ROUTING_TABLE_CHANGED
+					&& event.getMessage().contains(this.nodeID)) {
+				// when some node reports to have changed its routing table and
+				// now includes the node ID of the represented node, remember
+				// that node for later offline propagation measurement
+				nodesThatKnowMe.add(event.getSource());
+
+			} else if (event.getType() == EventType.NODE_STOPPED
+					&& event.getSource() != this.hsdNode) {
+				// when some other node is stopped, remove it from the list of
+				// nodes that know that the represented hidden service directory
+				// is online
+				nodesThatKnowMe.remove(event.getSource());
+			}
+		}
+	}
+
+	/**
+	 * The states in which a measurement can be.
+	 */
+	private static enum MeasurementState {
+
+		/**
+		 * The measurement was started and is currently running.
+		 */
+		STARTED,
+
+		/**
+		 * The measurement has succeeded with a positive result.
+		 */
+		SUCCEEDED,
+
+		/**
+		 * The measurement has failed within the given maximum time.
+		 */
+		FAILED,
+
+		/**
+		 * The measurement was aborted, because it has become impossible to
+		 * succeed.
+		 */
+		ABORTED
+	}
+
+	/**
+	 * Verifies that the online status of a given hidden service directory is
+	 * propagated to a given running node, and measures how long that
+	 * propagation takes. If the propagation does not succeed within one hour,
+	 * it is considered as failed.
+	 */
+	private static class OnlinePropagationMeasurement extends Thread implements
+			EventListener {
+
+		/**
+		 * The state of this measurement.
+		 */
+		private MeasurementState measurementState;
+
+		/**
+		 * The node ID of the hidden service directory.
+		 */
+		private String hsdNodeID;
+
+		/**
+		 * The hidden service directory of which the online status should be
+		 * propagated.
+		 */
+		private EventSource hsdNode;
+
+		/**
+		 * The node to which the online status should be propagated.
+		 */
+		private EventSource node;
+
+		/**
+		 * Creates a new measurement, but does not start it yet.
+		 * 
+		 * @param node
+		 *            The node to which the online status should be propagated.
+		 * @param hsdNode
+		 *            The hidden service directory of which the online status
+		 *            should be propagated.
+		 * @param hsdNodeID
+		 *            The node ID of the hidden service directory.
+		 */
+		private OnlinePropagationMeasurement(EventSource node,
+				EventSource hsdNode, String hsdNodeID) {
+
+			// remember the args
+			this.hsdNodeID = hsdNodeID;
+			this.hsdNode = hsdNode;
+			this.node = node;
+
+			// listen for events coming from the node and the hidden service
+			// directory
+			manager.addEventListener(node, this);
+			manager.addEventListener(hsdNode, this);
+
+		}
+
+		@Override
+		public synchronized void run() {
+
+			// start the measurement in state STARTED
+			this.measurementState = MeasurementState.STARTED;
+
+			// wait for a maximum of one hour for the measurement to succeed
+			long startingTime = System.currentTimeMillis();
+			long endOfWaiting = startingTime + 60 * 60 * 1000;
+			long now;
+			while (this.measurementState == MeasurementState.STARTED
+					&& (now = System.currentTimeMillis()) < endOfWaiting) {
+				try {
+					wait(endOfWaiting - now);
+				} catch (InterruptedException e) {
+				}
+			}
+
+			// if the node did not learn about the hidden service directory
+			// within one hour, fail the measurement
+			if (this.measurementState == MeasurementState.STARTED) {
+				measurementState = MeasurementState.FAILED;
+			}
+
+			// unregister event listener
+			manager.removeEventListener(this);
+
+			// print out measurement result
+			long duration = System.currentTimeMillis() - startingTime;
+			System.out.println(new Date() + ": Online propagation for HSDir "
+					+ this.hsdNode.getName() + " to node "
+					+ this.node.getName() + " took " + (duration / 1000)
+					+ " seconds and ended in state "
+					+ measurementState.toString());
+			if (this.measurementState == MeasurementState.SUCCEEDED) {
+				resultWriter.writeOnlinePropagation(duration / 1000);
+			} else if (this.measurementState == MeasurementState.FAILED) {
+				resultWriter.writeOnlinePropagation(-1);
+			}
+		}
+
+		public synchronized void handleEvent(Event event) {
+
+			// only accept events when this measurement is running
+			if (measurementState != MeasurementState.STARTED) {
+				return;
+			}
+
+			if (event.getSource() == this.node
+					&& event.getType() == EventType.NODE_ROUTING_TABLE_CHANGED
+					&& event.getMessage().contains(this.hsdNodeID)) {
+				// when the node has added the node ID of the hidden service
+				// directory, succeed the measurement
+				this.measurementState = MeasurementState.SUCCEEDED;
+				notify();
+
+			} else if (event.getType() == EventType.NODE_STOPPED) {
+				// when either the node or the hidden service directory were
+				// stopped within the one hour period, the measurement cannot be
+				// succeeded anymore and is therefore aborted
+				this.measurementState = MeasurementState.ABORTED;
+				notify();
+			}
+		}
+	}
+
+	/**
+	 * Verifies that the offline status of a given hidden service directory is
+	 * propagated to a given running node, and measures how long that
+	 * propagation takes. If the propagation does not succeed within one hour,
+	 * it is considered as failed.
+	 */
+	private static class OfflinePropagationMeasurement extends Thread implements
+			EventListener {
+
+		/**
+		 * The state of this measurement.
+		 */
+		private MeasurementState measurementState;
+
+		/**
+		 * The node ID of the hidden service directory.
+		 */
+		private String hsdNodeID;
+
+		/**
+		 * The hidden service directory of which the offline status should be
+		 * propagated.
+		 */
+		private EventSource hsdNode;
+
+		/**
+		 * The node to which the offline status should be propagated.
+		 */
+		private EventSource node;
+
+		/**
+		 * Creates a new measurement, but does not start it yet.
+		 * 
+		 * @param node
+		 *            The node to which the offline status should be propagated.
+		 * @param hsdNode
+		 *            The hidden service directory of which the offline status
+		 *            should be propagated.
+		 * @param hsdNodeID
+		 *            The node ID of the hidden service directory.
+		 */
+		private OfflinePropagationMeasurement(EventSource node,
+				EventSource hsdNode, String hsdNodeID) {
+
+			// remember the args
+			this.hsdNodeID = hsdNodeID;
+			this.node = node;
+			this.hsdNode = hsdNode;
+
+			// register for events from the node that should observe the offline
+			// status
+			manager.addEventListener(node, this);
+		}
+
+		@Override
+		public synchronized void run() {
+
+			// start the measurement in state STARTED
+			this.measurementState = MeasurementState.STARTED;
+
+			// wait for a maximum of 90 minutes for the measurement to succeed
+			long startingTime = System.currentTimeMillis();
+			long endOfWaiting = startingTime + 90 * 60 * 1000;
+			long now;
+			while (this.measurementState == MeasurementState.STARTED
+					&& (now = System.currentTimeMillis()) < endOfWaiting) {
+				try {
+					wait(endOfWaiting - now);
+				} catch (InterruptedException e) {
+				}
+			}
+
+			// if the node did not learn about the offline status of the hidden
+			// service directory, fail the measurement
+			if (this.measurementState == MeasurementState.STARTED) {
+				measurementState = MeasurementState.FAILED;
+			}
+
+			// unregister event listener
+			manager.removeEventListener(this);
+
+			// print out measurement result
+			long duration = System.currentTimeMillis() - startingTime;
+			System.out.println(new Date() + ": Offline propagation for HSDir "
+					+ this.hsdNode.getName() + " to node "
+					+ this.node.getName() + " took " + (duration / 1000)
+					+ " seconds and ended in state "
+					+ measurementState.toString());
+			if (this.measurementState == MeasurementState.SUCCEEDED) {
+				resultWriter.writeOfflinePropagation(duration / 1000);
+			} else if (this.measurementState == MeasurementState.FAILED) {
+				resultWriter.writeOfflinePropagation(-1);
+			}
+		}
+
+		public synchronized void handleEvent(Event event) {
+
+			// only accept events when this measurement is running
+			if (measurementState != MeasurementState.STARTED) {
+				return;
+			}
+
+			if (event.getType() == EventType.NODE_ROUTING_TABLE_CHANGED
+					&& !event.getMessage().contains(this.hsdNodeID)) {
+				// when the node has removed the node ID of the hidden service
+				// directory, succeed the measurement
+				this.measurementState = MeasurementState.SUCCEEDED;
+				notify();
+
+			} else if (event.getType() == EventType.NODE_STOPPED) {
+				// when the node was stopped within the waiting period, the
+				// measurement cannot be
+				// succeeded anymore and is therefore aborted
+				this.measurementState = MeasurementState.ABORTED;
+				notify();
+			}
+		}
+	}
+
+	/**
+	 * Manages the global routing table of all hidden service directories. This
+	 * global view differs from the local views of the nodes, because of the
+	 * propagation latency which may take some tens of minutes.
+	 */
+	private static class GlobalRoutingTable {
+
+		private static Comparator<String> comparator = new Comparator<String>() {
+
+			int[] base32Lookup = { 0xFF, 0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E,
+					0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+					0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+					0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13,
+					0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,
+					0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+					0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11,
+					0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xFF, 0xFF,
+					0xFF, 0xFF, 0xFF };
+
+			private String base32toHex(String base32) {
+
+				int i, index, lookup, offset, digit;
+
+				byte[] bytes = new byte[base32.length() * 5 / 8];
+
+				for (i = 0, index = 0, offset = 0; i < base32.length(); i++) {
+					lookup = base32.charAt(i) - '0';
+
+					/* Skip chars outside the lookup table */
+					if (lookup < 0 || lookup >= base32Lookup.length)
+						continue;
+
+					digit = base32Lookup[lookup];
+
+					/* If this digit is not in the table, ignore it */
+					if (digit == 0xFF)
+						continue;
+
+					if (index <= 3) {
+						index = (index + 5) % 8;
+						if (index == 0) {
+							bytes[offset] |= digit;
+							offset++;
+							if (offset >= bytes.length)
+								break;
+						} else
+							bytes[offset] |= digit << (8 - index);
+					} else {
+						index = (index + 5) % 8;
+						bytes[offset] |= (digit >>> index);
+						offset++;
+
+						if (offset >= bytes.length)
+							break;
+						bytes[offset] |= digit << (8 - index);
+					}
+				}
+				StringBuilder result = new StringBuilder();
+				for (byte b : bytes) {
+					result.append(Integer
+							.toHexString(new Integer(b).intValue()));
+				}
+				return result.toString();
+			}
+
+			public int compare(String arg0, String arg1) {
+				return base32toHex(arg0).compareTo(base32toHex(arg1));
+			}
+		};
+
+		private SortedMap<String, EventSource> hsDirs = new TreeMap<String, EventSource>(
+				comparator);
+
+		private synchronized void addHiddenServiceDirectory(String nodeID,
+				EventSource hsdNode) {
+			this.hsDirs.put(nodeID, hsdNode);
+			notifyAll();
+		}
+
+		private synchronized void removeHiddenServiceDirectory(String nodeID) {
+			this.hsDirs.remove(nodeID);
+			notifyAll();
+		}
+
+		/**
+		 * Returns the set of responsible hidden service directories for the
+		 * given descriptor ID.
+		 * 
+		 * @param descID
+		 *            The descriptor ID for which the responsible hidden service
+		 *            directories shall be determined.
+		 * @return The set of responsible hidden service directories.
+		 */
+		private synchronized Set<EventSource> getResponsibleHSDirs(String descID) {
+
+			Set<EventSource> result = new HashSet<EventSource>();
+			if (this.hsDirs.size() < 3) {
+				return result;
+			}
+
+			for (EventSource s : this.hsDirs.tailMap(descID).values()) {
+				if (result.size() < 3) {
+					result.add(s);
+				} else {
+					break;
+				}
+			}
+
+			for (EventSource s : this.hsDirs.values()) {
+				if (result.size() < 3) {
+					result.add(s);
+				} else {
+					break;
+				}
+			}
+
+			return result;
+		}
+
+		/**
+		 * Waits for the given number of millis until either a node is added or
+		 * removed.
+		 * 
+		 * @param timeToWait
+		 *            The number of millis to wait.
+		 */
+		public synchronized void waitForRoutingTableChange(long timeToWait) {
+			try {
+				wait(timeToWait);
+			} catch (InterruptedException e) {
+			}
+		}
+	}
+
+	/**
+	 * The routing table containing the global state of all hidden service
+	 * directories in the network.
+	 */
+	private static GlobalRoutingTable globalRoutingTable = new GlobalRoutingTable();
+
+	/**
+	 * Observes all publications of descriptors by hidden service providers.
+	 * Whenever there is a novel descriptor, the observer launches measurements
+	 * of the ropagation of the new descriptor to the responsible hidden service
+	 * directories.
+	 */
+	private static class DescriptorObserverStarter implements EventListener {
+
+		/**
+		 * Set of all descriptor IDs that have been observed so far.
+		 */
+		private Set<String> knownDescIDs = new HashSet<String>();
+
+		/**
+		 * Creates a new observer that starts listening for events.
+		 */
+		private DescriptorObserverStarter() {
+			manager.addEventListener(this);
+		}
+
+		public void handleEvent(Event event) {
+			// listen for new desc-ids
+			if (event.getType() == EventType.BOB_SENDING_PUBLISH_DESC) {
+				// a descriptor was published by any hidden service provider;
+				// check if this descriptor ID is novel
+
+				// parse desc id from the following message:
+				// "Sending publish request for v2 descriptor for service '.*'
+				// with descriptor ID '.*' with validity of .* seconds [...]"
+				String message = event.getMessage();
+				String prefixDescID = "with descriptor ID '";
+				String descID = message.substring(message.indexOf(prefixDescID)
+						+ prefixDescID.length());
+				descID = descID.substring(0, 32);
+
+				if (!knownDescIDs.contains(descID)) {
+					String prefixSecondsValid = "with validity of ";
+					String secondsValidPlusRest = message.substring(message
+							.indexOf(prefixSecondsValid)
+							+ prefixSecondsValid.length());
+					String[] splitted = secondsValidPlusRest.split(" ");
+					long secondsValid = Long.parseLong(splitted[0]);
+
+					if (secondsValid > 30 * 60) {
+						new DescriptorObserver(descID, secondsValid).start();
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Observes a descriptor from its first publication to 30 minutes before its
+	 * validity ends. Initiates a descriptor propagation measurement for every
+	 * hidden service directory that either is or becomes responsible for the
+	 * descriptor ID. (This does not include checks that a descriptor remains
+	 * stored on the responsible hidden service directories.)
+	 */
+	private static class DescriptorObserver extends Thread {
+
+		/**
+		 * The descriptor ID of the observed descriptor.
+		 */
+		private String descID;
+
+		/**
+		 * Time in millis when the validity of the observed descriptor amounts
+		 * 30 minutes.
+		 */
+		private long endOfWaiting;
+
+		/**
+		 * The set of hidden service directories that we think is responsible
+		 * for storing the observed descriptor.
+		 */
+		private Set<EventSource> hsDirsDeemedResponsible;
+
+		/**
+		 * Creates a new observer instance, but does not start it yet.
+		 * 
+		 * @param descID
+		 *            The descriptor ID of the observed descriptor.
+		 * @param validityInSeconds
+		 *            The validity of the descriptor in seconds.
+		 */
+		private DescriptorObserver(String descID, long validityInSeconds) {
+
+			// remember the args
+			this.descID = descID;
+
+			// determine when the validity of the observed descriptor amounts 30
+			// minutes
+			this.endOfWaiting = System.currentTimeMillis() + validityInSeconds
+					* 1000 - 30 * 60 * 1000;
+		}
+
+		@Override
+		public void run() {
+
+			if (System.currentTimeMillis() < this.endOfWaiting) {
+				// when the descriptor is not valid for at least 30 minutes, we
+				// don't need to perform any measurements at all, because it is
+				// quite unlikely that they would succeed
+				return;
+			}
+
+			// start measurements for the currently responsible hidden service
+			// directories
+			hsDirsDeemedResponsible = globalRoutingTable
+					.getResponsibleHSDirs(this.descID);
+			for (EventSource responsibleDir : hsDirsDeemedResponsible) {
+				new DescriptorPropagationMeasurement(responsibleDir,
+						this.descID).start();
+			}
+
+			// wait until the validity of the descriptor is 30 minutes or less
+			long now;
+			while ((now = System.currentTimeMillis()) < this.endOfWaiting) {
+
+				// wait for changes in the global routing table
+				globalRoutingTable.waitForRoutingTableChange(this.endOfWaiting
+						- now);
+
+				// check if the descriptor validity is still sufficient to
+				// initiate new measurements
+				if (now < this.endOfWaiting) {
+
+					// check if the change affects us
+					Set<EventSource> newResponsibleHSDirs = globalRoutingTable
+							.getResponsibleHSDirs(this.descID);
+					Set<EventSource> newcomers = new HashSet<EventSource>(
+							newResponsibleHSDirs);
+					newcomers.removeAll(this.hsDirsDeemedResponsible);
+					if (newcomers.size() > 0) {
+
+						// initiate a new measurement for every new responsible
+						// hidden service directory
+						for (EventSource responsibleDir : newcomers) {
+							new DescriptorPropagationMeasurement(
+									responsibleDir, this.descID).start();
+						}
+						this.hsDirsDeemedResponsible = newResponsibleHSDirs;
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Verifies that a descriptor is propagated to a given hidden service
+	 * directory, and measures how long that propagation takes. If the
+	 * propagation does not succeed within 90 minutes, it is considered as
+	 * failed, unless a change in the routing table makes the hidden service
+	 * directory irresponsible for the given descriptor.
+	 */
+	private static class DescriptorPropagationMeasurement extends Thread
+			implements EventListener {
+
+		/**
+		 * The state of this measurement.
+		 */
+		private MeasurementState measurementState;
+
+		/**
+		 * The descriptor ID of the observed descriptor.
+		 */
+		private String descid;
+
+		/**
+		 * The hidden service directory that is deemed responsible to store the
+		 * given descriptor.
+		 */
+		private EventSource responsibleHSDir;
+
+		/**
+		 * Creates a new measurement instance, but does not start it yet.
+		 * 
+		 * @param responsibleHSDir
+		 *            The hidden service directory that is deemed responsible to
+		 *            store the given descriptor.
+		 * @param descid
+		 *            The descriptor ID of the observed descriptor.
+		 */
+		private DescriptorPropagationMeasurement(EventSource responsibleHSDir,
+				String descid) {
+
+			// remember the args
+			this.responsibleHSDir = responsibleHSDir;
+			this.descid = descid;
+
+			// register for events from the hidden service directory
+			manager.addEventListener(responsibleHSDir, this);
+		}
+
+		@Override
+		public synchronized void run() {
+
+			// start the measurement in state STARTED
+			this.measurementState = MeasurementState.STARTED;
+
+			// wait for a maximum of 90 minutes for the measurement to succeed
+			long startingTime = System.currentTimeMillis();
+			long endOfWaiting = startingTime + 90 * 60 * 1000;
+			long now;
+			while (this.measurementState == MeasurementState.STARTED
+					&& (now = System.currentTimeMillis()) < endOfWaiting) {
+
+				// wait for a change in the routing table, that might make the
+				// hidden service directory irresponsible for the given
+				// descriptor, or be interrupted by an incoming event
+				globalRoutingTable
+						.waitForRoutingTableChange(endOfWaiting - now);
+
+				if (this.measurementState == MeasurementState.STARTED
+						&& !globalRoutingTable
+								.getResponsibleHSDirs(this.descid).contains(
+										this.responsibleHSDir)) {
+					// routing table has changed, so that the hidden service
+					// directory is not responsible for the given descriptor any
+					// more
+					this.measurementState = MeasurementState.ABORTED;
+				}
+			}
+
+			// if the node did not learn about the hidden service directory
+			// within the given time, fail the measurement
+			if (this.measurementState == MeasurementState.STARTED) {
+				measurementState = MeasurementState.FAILED;
+			}
+
+			// unregister event listener
+			manager.removeEventListener(this);
+
+			// print out measurement result
+			long duration = System.currentTimeMillis() - startingTime;
+			System.out.println(new Date()
+					+ ": Descriptor propagation for desc ID " + this.descid
+					+ " took " + (duration / 1000)
+					+ " seconds to responsible HS directory "
+					+ this.responsibleHSDir.getName() + " and ended in state "
+					+ measurementState.toString());
+			if (this.measurementState == MeasurementState.SUCCEEDED) {
+				resultWriter.writeDescriptorPropagation(duration / 1000);
+			} else if (this.measurementState == MeasurementState.FAILED) {
+				resultWriter.writeDescriptorPropagation(-1);
+			}
+		}
+
+		public synchronized void handleEvent(Event event) {
+
+			if (event.getType() == EventType.HSDIR_DESC_STORED
+					&& event.getMessage().contains(this.descid)) {
+				// when the hidden service directory stores the given descriptor
+				// for the first time, the measurement succeeds
+				this.measurementState = MeasurementState.SUCCEEDED;
+				interrupt();
+			}
+		}
+	}
+
+	/**
+	 * wartet 20 min nach hinzufügen eines hidserv, um ihn anschließend als
+	 * verfügbar zu markieren
+	 * 
+	 * @author karsten
+	 * 
+	 */
+	/**
+	 * Observes a descriptor for the first 20 minutes after starting it before
+	 * adding it to the list of available hidden services. When the node is
+	 * stopped (within or after the 20 minutes), the hidden service will be
+	 * removed from the list of available hidden services.
+	 */
+	private static class HiddenServiceObserver extends Thread implements
+			EventListener {
+
+		/**
+		 * The onion address by which this hidden service can be accessed.
+		 */
+		private String onionAddress;
+
+		/**
+		 * The node that provides the hidden service.
+		 */
+		private EventSource providingNode;
+
+		/**
+		 * Creates a new observer instance, but does not start it yet.
+		 * 
+		 * @param providingNode
+		 *            The node that provides the hidden service.
+		 * @param onionAddress
+		 *            The onion address by which this hidden service can be
+		 *            accessed.
+		 */
+		private HiddenServiceObserver(EventSource providingNode,
+				String onionAddress) {
+
+			// remember the args
+			this.onionAddress = onionAddress;
+			this.providingNode = providingNode;
+
+			// listen for events coming from the providing node
+			manager.addEventListener(providingNode, this);
+		}
+
+		/**
+		 * Is the observed hidden service still available, or was the providing
+		 * node stopped?
+		 */
+		private boolean stopped = false;
+
+		@Override
+		public void run() {
+
+			// wait for 20 minutes until the hidden service can be considered
+			// available
+			long startingTime = System.currentTimeMillis();
+			long endOfWaiting = startingTime + 20 * 60 * 1000;
+			long now;
+			while (!this.stopped
+					&& (now = System.currentTimeMillis()) < endOfWaiting) {
+				try {
+					Thread.sleep(endOfWaiting - now);
+				} catch (InterruptedException e) {
+				}
+			}
+
+			// add it to the list of available hidden services
+			availableHiddenServices.put(this.onionAddress, this.providingNode);
+		}
+
+		public void handleEvent(Event event) {
+			if (event.getType() == EventType.NODE_STOPPED) {
+				// when the providing node is stopped, the hidden service will
+				// not be available any more
+				this.stopped = true;
+				availableHiddenServices.remove(this.onionAddress);
+			}
+		}
+	}
+
+	/**
+	 * A list of all hidden services that are available for testing.
+	 */
+	private static Map<String, EventSource> availableHiddenServices = new HashMap<String, EventSource>();
+
+	/**
+	 * Periodically (every 5 to 10 minutes) picks a hidden service that is
+	 * available and running for at least 20 minutes and performs a request to
+	 * it using an arbitrary node as proxy.
+	 */
+	private static class HiddenServiceRequestStarter extends Thread {
+
+		@Override
+		public void run() {
+			// first wait until HSDirs are up and descriptors distributed --
+			// stable state
+			// Thread.sleep(24 * 60 * 60 * 1000 + 90 * 60 * 1000);
+			try {
+				Thread.sleep(30 * 60 * 1000 + 90 * 60 * 1000);
+			} catch (InterruptedException e) {
+			}
+
+			Random rnd = new Random();
+			while (true) {
+				if (availableHiddenServices.size() > 0) {
+
+					// pick an available hidden service at random
+					String onionAddressToTry = new ArrayList<String>(
+							availableHiddenServices.keySet()).get(rnd
+							.nextInt(availableHiddenServices.size()));
+					EventSource providingNode = availableHiddenServices
+							.get(onionAddressToTry);
+
+					// pick an arbitrary running node as proxy
+					RouterNode useAsProxy = runningRouters.get(rnd
+							.nextInt(runningRouters.size()));
+
+					// start measurement
+					new HiddenServiceRequestMeasurement(onionAddressToTry,
+							providingNode, useAsProxy).start();
+				}
+
+				// wait for a random time between 5 to 10 minutes
+				try {
+					Thread.sleep(5 * 1000 + rnd.nextInt(5 * 1000));
+				} catch (InterruptedException e) {
+				}
+			}
+		}
+	}
+
+	/**
+	 * Verifies that a hidden service can be accessed, and measures how long
+	 * performing a request takes. If the request does not succeed within one
+	 * minute, it is considered as failed, unless either the node providing the
+	 * hidden service, or the node that is used as proxy fails.
+	 */
+	private static class HiddenServiceRequestMeasurement extends Thread
+			implements EventListener {
+
+		/**
+		 * The onion address to which the request shall be performed.
+		 */
+		private String onionAddress;
+
+		/**
+		 * The node that provides the hidden service.
+		 */
+		private EventSource providingNode;
+
+		/**
+		 * The node that is used as proxy for the request.
+		 */
+		private EventSource useAsProxy;
+
+		/**
+		 * The client application that performs the requests.
+		 */
+		private ClientApplication clientApp;
+
+		/**
+		 * The state of this measurement.
+		 */
+		private MeasurementState measurementState;
+
+		/**
+		 * The time when the request was sent from the client.
+		 */
+		private long requestSentFromClient;
+
+		/**
+		 * The time when a reply was received at the client.
+		 */
+		private long replyReceivedAtClient;
+
+		/**
+		 * Creates a new measurement instance, but does not start it yet.
+		 * 
+		 * @param onionAddress
+		 *            The onion address to which the request shall be performed.
+		 * @param providingNode
+		 *            The node that provides the hidden service.
+		 * @param useAsProxy
+		 *            The node that is used as proxy for the request.
+		 */
+		private HiddenServiceRequestMeasurement(String onionAddress,
+				EventSource providingNode, ProxyNode useAsProxy) {
+
+			// remember the args
+			this.onionAddress = onionAddress;
+			this.providingNode = providingNode;
+			this.useAsProxy = useAsProxy;
+
+			// register for events from the two involved nodes
+			manager.addEventListener(providingNode, this);
+			manager.addEventListener(useAsProxy, this);
+
+			// parse onion address into address and port parts
+			String[] parts = onionAddress.split(":");
+			String address = parts[0];
+			int port = Integer.parseInt(parts[1]);
+
+			// determine socks port of proxy
+			int socksPort = useAsProxy.getSocksPort();
+
+			// create client application and register for events originating
+			// from it
+			this.clientApp = network.createClient("client", address, port,
+					socksPort);
+			manager.addEventListener(this.clientApp, this);
+		}
+
+		@Override
+		public synchronized void run() {
+
+			// start the measurement in state STARTED
+			this.measurementState = MeasurementState.STARTED;
+
+			// perform the request
+			this.clientApp.performRequest(1, 60 * 1000, true);
+
+			// wait for a minute for the request to be performed
+			long startingTime = System.currentTimeMillis();
+			long endOfWaiting = startingTime + 60 * 1000;
+			long now;
+			while (this.measurementState == MeasurementState.STARTED
+					&& (now = System.currentTimeMillis()) < endOfWaiting) {
+				try {
+					wait(endOfWaiting - now);
+				} catch (InterruptedException e) {
+				}
+			}
+
+			// if the client application did not receive a reply within the
+			// given time, fail the measurement
+			if (this.measurementState == MeasurementState.STARTED) {
+				measurementState = MeasurementState.FAILED;
+			}
+
+			// unregister event listener
+			manager.removeEventListener(this);
+
+			// print out measurement result
+			System.out
+					.println(System.currentTimeMillis()
+							+ ": Hidden service request for onion address "
+							+ this.onionAddress
+							+ " running on node "
+							+ this.providingNode.getName()
+							+ " using node "
+							+ this.useAsProxy.getName()
+							+ " as proxy took "
+							+ (replyReceivedAtClient > 0
+									&& requestSentFromClient > 0 ? ((replyReceivedAtClient - requestSentFromClient) / 1000)
+									: -1) + " seconds and ended in state "
+							+ measurementState.toString());
+
+			if (this.measurementState == MeasurementState.SUCCEEDED) {
+				resultWriter
+						.writeHiddenServiceRequest((replyReceivedAtClient - requestSentFromClient) / 1000);
+			} else if (this.measurementState == MeasurementState.FAILED) {
+				resultWriter.writeHiddenServiceRequest(-1);
+			}
+		}
+
+		public void handleEvent(Event event) {
+			// only accept events when this measurement is running
+			if (measurementState != MeasurementState.STARTED) {
+				return;
+			}
+
+			if ((event.getSource() == this.useAsProxy || event.getSource() == this.providingNode)
+					&& event.getType() == EventType.NODE_STOPPED) {
+				// when either the node providing the hidden service, or the
+				// node that is used as proxy fails, abort measurement
+				this.measurementState = MeasurementState.ABORTED;
+				notify();
+
+			} else if (event.getSource() == this.clientApp
+					&& event.getType() == EventType.CLIENT_SENDING_REQUEST) {
+				// when the client application reports sending the request, note
+				// the time
+				this.requestSentFromClient = event.getOccurrenceTime();
+
+			} else if (event.getSource() == this.clientApp
+					&& event.getType() == EventType.CLIENT_REPLY_RECEIVED) {
+				// when the client application reports receiving a reply,
+				// succeed the measurement
+				this.replyReceivedAtClient = event.getOccurrenceTime();
+				this.measurementState = MeasurementState.SUCCEEDED;
+				notify();
+
+			} else if (event.getSource() == this.clientApp
+					&& event.getType() == EventType.CLIENT_GAVE_UP_REQUEST) {
+				// when the client application reports giving up the request,
+				// fail the measurement
+				this.measurementState = MeasurementState.FAILED;
+				notify();
+			}
+		}
+	}
+
+	/**
+	 * Writes the results of the measurements to files.
+	 */
+	private static class ResultWriter {
+
+		/**
+		 * Performs the actual writing to file.
+		 * 
+		 * @param fileName
+		 *            File name to write the measurement result to.
+		 * @param timeInSeconds
+		 *            Value to be written.
+		 */
+		private synchronized void writeToFile(String fileName,
+				long timeInSeconds) {
+			try {
+				File file = new File(network.getWorkingDirectory()
+						.getAbsolutePath()
+						+ File.separator + fileName);
+				if (!file.exists()) {
+					FileWriter fw = new FileWriter(file);
+					fw.append("" + timeInSeconds);
+					fw.close();
+				} else {
+					FileWriter fw = new FileWriter(file, true);
+					fw.append("," + timeInSeconds);
+					fw.close();
+				}
+			} catch (IOException e) {
+				System.err.println(new Date()
+						+ ": Could not write measurement result to file.");
+			}
+		}
+
+		/**
+		 * Writes the result of an online propagation measurement to file.
+		 * 
+		 * @param timeInSeconds
+		 *            Measurement result.
+		 * @throws IOException
+		 *             Thrown if the file could not be written for some reason.
+		 */
+		private synchronized void writeOnlinePropagation(long timeInSeconds) {
+			this.writeToFile("online-propagation", timeInSeconds);
+		}
+
+		/**
+		 * Writes the result of an offline propagation measurement to file.
+		 * 
+		 * @param timeInSeconds
+		 *            Measurement result.
+		 * @throws IOException
+		 *             Thrown if the file could not be written for some reason.
+		 */
+		private synchronized void writeOfflinePropagation(long timeInSeconds) {
+			this.writeToFile("offline-propagation", timeInSeconds);
+		}
+
+		/**
+		 * Writes the result of a descriptor propagation measurement to file.
+		 * 
+		 * @param timeInSeconds
+		 *            Measurement result.
+		 * @throws IOException
+		 *             Thrown if the file could not be written for some reason.
+		 */
+		private synchronized void writeDescriptorPropagation(long timeInSeconds) {
+			this.writeToFile("descriptor-propagation", timeInSeconds);
+		}
+
+		/**
+		 * Writes the result of a hidden service request measurement to file.
+		 * 
+		 * @param timeInSeconds
+		 *            Measurement result.
+		 * @throws IOException
+		 *             Thrown if the file could not be written for some reason.
+		 */
+		private synchronized void writeHiddenServiceRequest(long timeInSeconds) {
+			this.writeToFile("hidden-service-requests", timeInSeconds);
+		}
+	}
+
+	/**
+	 * Writes the results of the measurements to files.
+	 */
+	private static ResultWriter resultWriter = new ResultWriter();
+
+	/**
+	 * The network configuration.
+	 */
+	private static Network network;
+
+	/**
+	 * The event manager of this application.
+	 */
+	private static EventManager manager;
+
+	/**
+	 * List of all directory nodes.
+	 */
+	private static List<DirectoryNode> runningDirs;
+
+	/**
+	 * List of all router nodes.
+	 */
+	private static List<RouterNode> runningRouters;
+
+	/**
+	 * Sets up and runs the test.
+	 * 
+	 * @param args
+	 *            Optionally, a base port number can be passed so that the
+	 *            started Tor processes use ports starting from that number (up
+	 *            to the next few hundreds).
+	 * @throws TorProcessException
+	 *             Thrown if there is a problem with the JVM-external Tor
+	 *             processes that we cannot handle.
+	 */
+	public static void main(String[] args) throws TorProcessException {
+
+		int portStart = 7000;
+
+		if (args.length == 1) {
+			try {
+				portStart = Integer.parseInt(args[0]);
+			} catch (NumberFormatException e) {
+				System.out.println("Usage: java "
+						+ DistributedStorage.class.getCanonicalName()
+						+ " [basePort]");
+				System.exit(1);
+			}
+		}
+
+		// create a network to initialize a test case
+		network = NetworkFactory.createNetwork("distributed-storage");
+
+		System.out.println(new Date() + ": Starting test run "
+				+ network.getWorkingDirectory().getName());
+
+		// obtain reference to event manager to be able to respond to events
+		manager = network.getEventManager();
+
+		// add event type patterns for events that only occur in a modified Tor
+		manager.registerEventTypePattern(
+				"Hidden service routing table has changed",
+				EventType.NODE_ROUTING_TABLE_CHANGED);
+		manager.registerEventTypePattern("Sending publish request for "
+				+ "v2 descriptor for "
+				+ "service '.*' with descriptor ID '.*' with validity of .* "
+				+ "seconds to hidden service directory '.*' on port .*",
+				EventType.BOB_SENDING_PUBLISH_DESC);
+		manager.registerEventTypePattern("Successfully stored service "
+				+ "descriptor with desc ID " + "'.*' and len .*",
+				EventType.HSDIR_DESC_STORED);
+		manager.registerEventTypePattern("Sending fetch request for v2 "
+				+ "descriptor for "
+				+ "service '.*' with descriptor ID '.*' from hidden "
+				+ "service directory '.*' on port .*",
+				EventType.ALICE_SENDING_FETCH_DESC);
+		manager
+				.registerEventTypePattern(
+						"Successfully stored service descriptor with "
+								+ "desc ID '.*'", EventType.HSDIR_DESC_STORED);
+
+		// create two directory nodes with parameters (router name, control
+		// port, SOCKS port, OR port, dir port)
+		runningDirs = new ArrayList<DirectoryNode>();
+		DirectoryNode dir1 = network.createDirectory("dir1", portStart + 1,
+				portStart + 2, portStart + 3, portStart + 4);
+		DirectoryNode dir2 = network.createDirectory("dir2", portStart + 11,
+				portStart + 12, portStart + 13, portStart + 14);
+		runningDirs.add(dir1);
+		runningDirs.add(dir2);
+
+		runningRouters = new ArrayList<RouterNode>();
+
+		// create 9 router nodes with parameters (router name, control port,
+		// SOCKS port, OR port, dir mirror port)
+		int routerCounter = 1;
+		for (; routerCounter < 10; routerCounter++) {
+			RouterNode router = network.createRouter("router0" + routerCounter,
+					portStart + routerCounter * 10 + 11, portStart
+							+ routerCounter * 10 + 12, portStart
+							+ routerCounter * 10 + 13, portStart
+							+ routerCounter * 10 + 14);
+			router.addConfiguration("HSDir 1");
+			runningRouters.add(router);
+		}
+
+		// configure nodes of this network to be part of a private network
+		network.configureAsPrivateNetwork();
+
+		// write configuration of proxy node
+		network.writeConfigurations();
+		System.out.println(new Date()
+				+ ": Successfully written configurations!");
+
+		// start proxy node and wait until it has opened a circuit with a
+		// timeout of 10 seconds
+		if (!network.startNodes(10000)) {
+
+			// failed to start the proxy
+			System.out.println(new Date() + ": Failed to start nodes!");
+			System.exit(1);
+		}
+		System.out.println(new Date() + ": Successfully started nodes!");
+
+		// start observers for all initial routers which might become hidden
+		// service directories after some time (if not stopped before)
+		for (RouterNode router : runningRouters) {
+			new HiddenServiceDirectoryObserver(router, router
+					.determineFingerprintBase32()).start();
+		}
+
+		// start measurement of descriptor propagation
+		new DescriptorObserverStarter();
+
+		// start thread that will periodically try to access a hidden service
+		new HiddenServiceRequestStarter().start();
+
+		// hup until proxy has built circuits (6 retries, 10 seconds timeout
+		// each)
+		if (!network.hupUntilUp(6, 10000)) {
+
+			// failed to build circuits
+			System.out.println(new Date() + ": Failed to build circuits!");
+			System.exit(1);
+		}
+		System.out.println(new Date() + ": Successfully built circuits!");
+
+		int HOURS_TO_WAIT = 30;
+
+		// let it run for HOURS_TO_WAIT minutes...
+		System.out.println(new Date() + ": Waiting for " + HOURS_TO_WAIT
+				+ " hours, changing node population every hour...");
+
+		// TODO change after testing...
+		long hiddenServiceStableTime = System.currentTimeMillis() + 30 * 60 * 1000;
+
+		Random rnd = new Random();
+		long waitingTime = 0;
+
+		for (int i = 0; i < HOURS_TO_WAIT - 1; i++) {
+
+			// wait for 15 to 30 minutes (plus any remaining waiting time) now
+			waitingTime += 15 * 1000 + rnd.nextInt(15 * 1000);
+			try {
+				Thread.sleep(1L * 60L * 60L * 1000L);
+			} catch (InterruptedException e) {
+				// do nothing
+			}
+			// wait for the rest of the half hour later
+			waitingTime = 30 * 1000 - waitingTime;
+
+			// shut down one node
+			int candidate = rnd.nextInt(runningRouters.size());
+			RouterNode removedRouter = runningRouters.remove(candidate);
+			System.out.println(new Date() + ": Shutting down router "
+					+ removedRouter.getNodeName() + "...");
+			removedRouter.shutdown();
+
+			// wait for 15 to 30 minutes (plus any remaining waiting time) now
+			waitingTime += 15 * 1000 + rnd.nextInt(15 * 1000);
+			try {
+				Thread.sleep(1L * 60L * 60L * 1000L);
+			} catch (InterruptedException e) {
+				// do nothing
+			}
+			// wait for the rest of the half hour later
+			waitingTime = 30 * 1000 - waitingTime;
+
+			// start another node
+			RouterNode newRouter = network.createRouter("router"
+					+ routerCounter, portStart + routerCounter * 10 + 11,
+					portStart + routerCounter * 10 + 12, portStart
+							+ routerCounter * 10 + 13, portStart
+							+ routerCounter * 10 + 14);
+
+			newRouter.addConfiguration("HSDir 1");
+
+			// if the system is running for at least 24 hours, it can be
+			// considered stable, so that hidden services can be started
+			long now = System.currentTimeMillis();
+			if (now >= hiddenServiceStableTime) {
+
+				// add hidden service to the configuration of the new router
+				newRouter.addHiddenService("hidServ" + routerCounter, portStart
+						+ routerCounter * 10 + 15, 80);
+
+				// let the new router only publish v2 descriptors
+				newRouter.addConfiguration("PublishHidServDescriptors 0");
+				newRouter.addConfiguration("PublishV2HidServDescriptors 1");
+			}
+
+			// re-configure nodes of this network to be part of a private
+			// network
+			network.configureAsPrivateNetwork();
+
+			// manager.addEventListener(newRouter, new
+			runningRouters.add(newRouter);
+			newRouter.writeConfiguration();
+			System.out.println(new Date()
+					+ ": Starting router "
+					+ newRouter.getNodeName()
+					+ (now >= hiddenServiceStableTime ? " with hidden service"
+							: "") + "...");
+			newRouter.startNode(5000);
+
+			// if a hidden service was started, start an observer for it
+			if (now >= hiddenServiceStableTime) {
+				new HiddenServiceObserver(newRouter, newRouter.getOnionAddress(
+						"hidServ" + routerCounter, 2));
+			}
+
+			// start observer for the new hidden service directory
+			new HiddenServiceDirectoryObserver(newRouter, newRouter
+					.determineFingerprintBase32()).start();
+
+			routerCounter++;
+
+			System.out.println(new Date() + ": Waiting for another "
+					+ (HOURS_TO_WAIT - i - 1) + " hour"
+					+ (i == HOURS_TO_WAIT - 2 ? "" : "s") + " ...");
+		}
+
+		// waiting for the last hour
+		try {
+			Thread.sleep(1L * 60L * 60L * 1000L);
+		} catch (InterruptedException e) {
+			// do nothing
+		}
+
+		// shut down nodes
+		network.shutdownNodes();
+
+		System.out.println(new Date() + ": Exiting...");
+		System.exit(1);
+	}
+}

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -13,7 +13,7 @@
 import java.util.logging.Logger;
 
 import de.uniba.wiai.lspi.puppetor.ClientApplication;
-import de.uniba.wiai.lspi.puppetor.Event;
+import de.uniba.wiai.lspi.puppetor.EventType;
 
 /**
  * Implementation of <code>ClientApplication</code>.
@@ -121,8 +121,11 @@
 							.currentTimeMillis();
 
 					// send event to event manager
-					eventManager.observeEvent(ClientApplicationImpl.this,
-							Event.APPLICATION_SENDING_REQUEST);
+					eventManager.observeInternalEvent(
+							timeBeforeConnectionAttempt,
+							ClientApplicationImpl.this,
+							EventType.CLIENT_SENDING_REQUEST,
+							"Sending request.");
 
 					Socket s = null;
 					try {
@@ -146,8 +149,11 @@
 						in.read();
 
 						// send event to event manager
-						eventManager.observeEvent(ClientApplicationImpl.this,
-								Event.APPLICATION_REPLY_RECEIVED);
+						eventManager.observeInternalEvent(System
+								.currentTimeMillis(),
+								ClientApplicationImpl.this,
+								EventType.CLIENT_REPLY_RECEIVED,
+								"Received response.");
 
 						// if we should stop on success, stop further connection
 						// attempts
@@ -167,8 +173,11 @@
 								"Connection to remote server timed out!", e);
 
 						// send event to event manager
-						eventManager.observeEvent(ClientApplicationImpl.this,
-								Event.APPLICATION_GAVE_UP_REQUEST);
+						eventManager.observeInternalEvent(System
+								.currentTimeMillis(),
+								ClientApplicationImpl.this,
+								EventType.CLIENT_GAVE_UP_REQUEST,
+								"Giving up request.");
 
 						// try again immediately, if there are retries left
 
@@ -180,8 +189,11 @@
 										+ "established!", e);
 
 						// send event to event manager
-						eventManager.observeEvent(ClientApplicationImpl.this,
-								Event.APPLICATION_GAVE_UP_REQUEST);
+						eventManager.observeInternalEvent(System
+								.currentTimeMillis(),
+								ClientApplicationImpl.this,
+								EventType.CLIENT_GAVE_UP_REQUEST,
+								"Giving up request.");
 
 						// wait for the rest of the timeout
 						long timeOfTimeoutLeft = timeBeforeConnectionAttempt
@@ -226,8 +238,10 @@
 				logger.log(Level.FINE, "Requests performed!");
 
 				// send event to event manager
-				eventManager.observeEvent(ClientApplicationImpl.this,
-						Event.APPLICATION_REQUESTS_PERFORMED);
+				eventManager.observeInternalEvent(System.currentTimeMillis(),
+						ClientApplicationImpl.this,
+						EventType.CLIENT_REQUESTS_PERFORMED,
+						"Requests performed.");
 
 				// log exiting
 				logger.exiting(this.getClass().getName(), "run");
@@ -307,8 +321,8 @@
 	 * @param socksPort
 	 *            SOCKS port of the local Tor node.
 	 * @throws IllegalArgumentException
-	 *             If at least one of the parameters is <code>null</code> or has an invalid
-	 *             value.
+	 *             If at least one of the parameters is <code>null</code> or
+	 *             has an invalid value.
 	 */
 	ClientApplicationImpl(NetworkImpl network, String clientApplicationName,
 			String targetName, int targetPort, int socksPort) {
@@ -418,4 +432,8 @@
 				+ this.targetName + "\", targetPort=" + this.targetPort
 				+ ", socksPort=" + this.socksPort;
 	}
+
+	public String getName() {
+		return this.clientApplicationName;
+	}
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/DirectoryNodeImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/DirectoryNodeImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/DirectoryNodeImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -65,7 +65,7 @@
 		// TODO make this a little bit more configurable---same as to
 		// location of tor executable?
 		this.configuration
-				.add("RecommendedVersions 0.1.2.12-rc,0.1.2.7-alpha-dev,0.2.0.0-alpha-dev,0.2.0.2-alpha-dev");
+				.add("RecommendedVersions 0.1.2.12-rc,0.1.2.7-alpha-dev,0.2.0.0-alpha-dev,0.2.0.2-alpha-dev,0.2.0.4-alpha-dev,0.2.0.4-alpha");
 
 		this.configuration.add("VersioningAuthoritativeDirectory 1");
 

Added: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventImpl.java	                        (rev 0)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -0,0 +1,104 @@
+package de.uniba.wiai.lspi.puppetor.impl;
+
+import java.util.Date;
+
+import de.uniba.wiai.lspi.puppetor.Event;
+import de.uniba.wiai.lspi.puppetor.EventSource;
+import de.uniba.wiai.lspi.puppetor.EventType;
+
+/**
+ * Implementation of <code>Event</code>.
+ * 
+ * @author kloesing
+ */
+public class EventImpl implements Event {
+
+	/**
+	 * The source of this event.
+	 */
+	private EventSource source;
+
+	/**
+	 * The type of this event.
+	 */
+	private EventType type;
+
+	/**
+	 * Either the log message that led to firing this event, or an internal
+	 * message.
+	 */
+	private String message;
+
+	/**
+	 * The occurrence time of the event or of the corresponding log statement.
+	 */
+	private long occurrenceTime;
+
+	/**
+	 * Creates a new <code>EventImpl</code>.
+	 * 
+	 * @param occurrenceTime
+	 *            The occurrence time of the event or of the corresponding log
+	 *            statement.
+	 * @param source
+	 *            The source of this event.
+	 * @param type
+	 *            The type of this event.
+	 * @param message
+	 *            Either the log message that led to firing this event, or an
+	 *            internal message.
+	 */
+	EventImpl(long occurrenceTime, EventSource source, EventType type,
+			String message) {
+		// time may be 0 and type null
+		this.occurrenceTime = occurrenceTime;
+		this.source = source;
+		this.type = type;
+		this.message = message;
+	}
+
+	public EventSource getSource() {
+		return this.source;
+	}
+
+	public EventType getType() {
+		return this.type;
+	}
+
+	/**
+	 * Sets the event type to the given type.
+	 * 
+	 * @param type
+	 *            The type of this event.
+	 */
+	void setType(EventType type) {
+		this.type = type;
+	}
+
+	public String getMessage() {
+		return this.message;
+	}
+
+	public long getOccurrenceTime() {
+		return this.occurrenceTime;
+	}
+
+	@Override
+	public String toString() {
+		return this.getClass().getSimpleName() + ": occurenceTime="
+				+ new Date(this.occurrenceTime) + ", source=\""
+				+ this.source.getName() + "\", type=" + this.type.toString()
+				+ ", message=\"" + this.message + "\"";
+	}
+
+	/**
+	 * Sets the occurrence time to the given time.
+	 * 
+	 * @param occurrenceTime
+	 *            The occurrence time of the event or of the corresponding log
+	 *            statement.
+	 */
+	public void setOccurenceTime(long occurrenceTime) {
+		this.occurrenceTime = occurrenceTime;
+	}
+}

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventManagerImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventManagerImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/EventManagerImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -1,18 +1,27 @@
 package de.uniba.wiai.lspi.puppetor.impl;
 
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import de.uniba.wiai.lspi.puppetor.Event;
 import de.uniba.wiai.lspi.puppetor.EventListener;
 import de.uniba.wiai.lspi.puppetor.EventManager;
 import de.uniba.wiai.lspi.puppetor.EventSource;
+import de.uniba.wiai.lspi.puppetor.EventType;
 
 /**
  * Implementation of <code>EventManager</code>.
@@ -20,11 +29,16 @@
 public class EventManagerImpl implements EventManager {
 
 	/**
-	 * Registered event handlers.
+	 * Registered event handlers for specific sources.
 	 */
 	private Map<EventSource, Set<EventListener>> eventHandlers;
 
 	/**
+	 * Registered event handlers for all sources.
+	 */
+	private Set<EventListener> eventHandlersForAllSources;
+
+	/**
 	 * Logger for this <code>EventManagerImpl</code> instance which is called
 	 * "event." plus the name of the network.
 	 */
@@ -64,7 +78,23 @@
 		// create data structures
 		this.observedEvents = new HashMap<EventSource, List<Event>>();
 		this.eventHandlers = new HashMap<EventSource, Set<EventListener>>();
+		this.eventHandlersForAllSources = new HashSet<EventListener>();
 
+		// start thread to parse events
+		Thread eventParseThread = new Thread() {
+			@Override
+			public void run() {
+				while (true) {
+					parseNextEvent();
+				}
+			}
+		};
+		eventParseThread.setDaemon(true);
+		eventParseThread.start();
+
+		// initialize event type patterns
+		initializeEventTypePatterns();
+
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "EventManagerImpl");
 	}
@@ -103,6 +133,31 @@
 		return result;
 	}
 
+	public synchronized void addEventListener(EventListener listener) {
+
+		// log entering
+		this.logger.entering(this.getClass().getName(), "addEventListener",
+				new Object[] { listener });
+
+		// check parameters
+		if (listener == null) {
+			IllegalArgumentException e = new IllegalArgumentException();
+			this.logger.throwing(this.getClass().getName(), "addEventListener",
+					e);
+			throw e;
+		}
+
+		// add listener
+		this.eventHandlersForAllSources.add(listener);
+
+		// log change
+		this.logger.log(Level.FINE, "Added event listener for all sources.");
+
+		// log exiting and return
+		this.logger.exiting(this.getClass().getName(), "addEventListener");
+		return;
+	}
+
 	public synchronized List<Event> getEventHistory(EventSource source) {
 
 		// log entering
@@ -132,14 +187,15 @@
 		return result;
 	}
 
-	public synchronized boolean hasEventOccured(EventSource source, Event event) {
+	public synchronized boolean hasEventOccured(EventSource source,
+			EventType type) {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "hasEventOccured",
-				new Object[] { source, event });
+				new Object[] { source, type });
 
 		// check parameters
-		if (source == null || event == null) {
+		if (source == null || type == null) {
 			IllegalArgumentException e = new IllegalArgumentException();
 			this.logger.throwing(this.getClass().getName(), "hasEventOccured",
 					e);
@@ -147,8 +203,15 @@
 		}
 
 		// determine result
-		boolean result = this.observedEvents.containsKey(source)
-				&& this.observedEvents.get(source).contains(event);
+		boolean result = false;
+		if (this.observedEvents.containsKey(source)) {
+			for (Event event : this.observedEvents.get(source)) {
+				if (event.getType() == type) {
+					result = true;
+					break;
+				}
+			}
+		}
 
 		// log exiting and return result
 		this.logger.exiting(this.getClass().getName(), "hasEventOccured",
@@ -157,6 +220,176 @@
 	}
 
 	/**
+	 * An ordered list of all log statements that are yet unparsed.
+	 */
+	private List<EventImpl> unparsedLogStatements = new LinkedList<EventImpl>();
+
+	/**
+	 * stores either events produced by ourself or unparsed Tor log events for
+	 * later parsing by a background thread in invocation order
+	 * 
+	 * time and type will be parsed from Tor log message; if message does not
+	 * contain anything of interest, the event will be discarded
+	 * 
+	 * @param source
+	 * @param logMessage
+	 */
+	synchronized void observeUnparsedEvent(EventSource source, String logMessage) {
+		this.unparsedLogStatements.add(new EventImpl(0, source, null,
+				logMessage));
+		notifyAll();
+	}
+
+	/**
+	 * Add an internal event to the event queue.
+	 * 
+	 * @param occurrenceTime
+	 *            The occurrence time of the event.
+	 * @param source
+	 *            The event source.
+	 * @param type
+	 *            The event type.
+	 * @param message
+	 *            The event message.
+	 */
+	synchronized void observeInternalEvent(long occurrenceTime,
+			EventSource source, EventType type, String message) {
+		this.unparsedLogStatements.add(new EventImpl(occurrenceTime, source,
+				type, message));
+		notifyAll();
+	}
+
+	/**
+	 * Parse a log statement coming from Tor and see if it is interesting for
+	 * us.
+	 */
+	void parseNextEvent() {
+		EventImpl event = null;
+		synchronized (this) {
+			while (this.unparsedLogStatements.isEmpty()) {
+				try {
+					wait();
+				} catch (InterruptedException e) {
+				}
+			}
+
+			event = this.unparsedLogStatements.remove(0);
+		}
+
+		// does the event require parsing? if not, process immediately
+		if (event.getType() != null) {
+			observeEvent(event);
+		} else {
+
+			String line = event.getMessage();
+
+			/*
+			 * the logging output of Tor does not contain a year component; put
+			 * in the year at the time of parsing (which happens approx. 10 ms
+			 * after the logging took place) in the good hope that this tool is
+			 * not run at midnight on New Year's Eve...
+			 */
+			Calendar c = Calendar.getInstance();
+			int currentYear = c.get(Calendar.YEAR);
+
+			for (Entry<Pattern, EventType> entry : eventTypePatterns.entrySet()) {
+				Matcher matcher = entry.getKey().matcher(line);
+				if (matcher.find()) {
+					SimpleDateFormat sdf = new SimpleDateFormat(
+							"MMM dd HH:mm:ss.SSS");
+					Date logTime = sdf.parse(line, new ParsePosition(0));
+					c.setTimeInMillis(logTime.getTime());
+					c.set(Calendar.YEAR, currentYear);
+					long t = c.getTimeInMillis();
+					event.setOccurenceTime(t);
+					event.setType(entry.getValue());
+					observeEvent(event);
+					break;
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * Map of all patterns, that should be included when parsing log statements
+	 * coming from Tor, and the respective event types, that should be fired.
+	 */
+	Map<Pattern, EventType> eventTypePatterns;
+
+	public synchronized void registerEventTypePattern(String patternString,
+			EventType eventType) {
+		eventTypePatterns.put(Pattern.compile(patternString), eventType);
+	}
+
+	/**
+	 * Initializes the parsing engine with the standard log message patterns
+	 * that should be included in current Tor. Any further patterns should be
+	 * added by the test application manually.
+	 */
+	private void initializeEventTypePatterns() {
+		eventTypePatterns = new HashMap<Pattern, EventType>();
+		registerEventTypePattern("Opening Control listener on .*",
+				EventType.NODE_CONTROL_PORT_OPENED);
+		registerEventTypePattern("Tor has successfully opened a circuit. "
+				+ "Looks like client functionality is working.",
+				EventType.NODE_CIRCUIT_OPENED);
+		registerEventTypePattern("Established circuit .* as introduction "
+				+ "point for service .*",
+				EventType.BOB_BUILT_INTRO_CIRC_SENDING_ESTABLISH_INTRO);
+		registerEventTypePattern("Received INTRO_ESTABLISHED cell on "
+				+ "circuit .* for service .*",
+				EventType.BOB_INTRO_ESTABLISHED_RECEIVED);
+		registerEventTypePattern("Sending publish request for hidden "
+				+ "service .*", EventType.BOB_SENDING_PUBLISH_DESC);
+		registerEventTypePattern("Uploaded rendezvous descriptor",
+				EventType.BOB_DESC_PUBLISHED_RECEIVED);
+		registerEventTypePattern("Received INTRODUCE2 cell for service .* "
+				+ "on circ .*", EventType.BOB_INTRODUCE2_RECEIVED);
+		registerEventTypePattern("Done building circuit .* to rendezvous "
+				+ "with cookie .* for service .*",
+				EventType.BOB_BUILT_REND_CIRC_SENDING_RENDEZVOUS1);
+		registerEventTypePattern("begin is for rendezvous",
+				EventType.BOB_APP_CONN_OPENED);
+		registerEventTypePattern("Got a hidden service request for ID '.*'",
+				EventType.ALICE_ONION_REQUEST_RECEIVED);
+		registerEventTypePattern("Fetching rendezvous descriptor for "
+				+ "service .*", EventType.ALICE_SENDING_FETCH_DESC);
+		registerEventTypePattern("Received rendezvous descriptor",
+				EventType.ALICE_DESC_FETCHED_RECEIVED);
+		registerEventTypePattern("Sending an ESTABLISH_RENDEZVOUS cell",
+				EventType.ALICE_BUILT_REND_CIRC_SENDING_ESTABLISH_RENDEZVOUS);
+		registerEventTypePattern("Got rendezvous ack. This circuit is now "
+				+ "ready for rendezvous",
+				EventType.ALICE_RENDEZVOUS_ESTABLISHED_RECEIVED);
+		registerEventTypePattern("introcirc is open",
+				EventType.ALICE_BUILT_INTRO_CIRC);
+		registerEventTypePattern("Sending an INTRODUCE1 cell",
+				EventType.ALICE_SENDING_INTRODUCE1);
+		registerEventTypePattern("Received ack. Telling rend circ",
+				EventType.ALICE_INTRODUCE_ACK_RECEIVED);
+		registerEventTypePattern("Got RENDEZVOUS2 cell from hidden service",
+				EventType.ALICE_RENDEZVOUS2_RECEIVED_APP_CONN_OPENED);
+		registerEventTypePattern("Handling rendezvous descriptor post",
+				EventType.DIR_PUBLISH_DESC_RECEIVED);
+		registerEventTypePattern("Handling rendezvous descriptor get",
+				EventType.DIR_FETCH_DESC_RECEIVED);
+		registerEventTypePattern(
+				"Received an ESTABLISH_INTRO request on circuit .*",
+				EventType.IPO_RECEIVED_ESTABLISH_INTRO_SENDING_INTRO_ESTABLISHED);
+		registerEventTypePattern(
+				"Received an INTRODUCE1 request on circuit .*",
+				EventType.IPO_RECEIVED_INTRODUCE1_SENDING_INTRODUCE2_AND_INTRODUCE_ACK);
+		registerEventTypePattern(
+				"Received an ESTABLISH_RENDEZVOUS request on circuit .*",
+				EventType.RPO_RECEIVED_ESTABLISH_RENDEZVOUS_SENDING_RENDEZVOUS_ESTABLISHED);
+		registerEventTypePattern(
+				"Got request for rendezvous from circuit .* to cookie .*",
+				EventType.RPO_RECEIVING_RENDEZVOUS1_SENDING_RENDEZVOUS2);
+
+	}
+
+	/**
 	 * Stores the given <code>event</code> from <code>source</code> to the
 	 * event history and propagates its occurrence to all registered event
 	 * handlers.
@@ -166,8 +399,10 @@
 	 * @param event
 	 *            The event type.
 	 */
-	synchronized void observeEvent(EventSource source, Event event) {
+	synchronized void observeEvent(Event event) {
 
+		EventSource source = event.getSource();
+
 		// log entering
 		this.logger.entering(this.getClass().getName(), "observeEvent",
 				new Object[] { source, event });
@@ -176,7 +411,7 @@
 				+ source + "!");
 
 		// remember observed event
-		if (!this.observedEvents.containsKey(source)) {
+		if (!this.observedEvents.containsKey(event.getSource())) {
 			this.observedEvents.put(source, new ArrayList<Event>());
 		}
 		this.observedEvents.get(source).add(event);
@@ -203,6 +438,20 @@
 			}
 		}
 
+		// make a copy of the event handler set for all sources, because some
+		// event handlers might want to remove themselves from this set while
+		// handling the event
+		Set<EventListener> copyOfEventHandlersForAllSources = new HashSet<EventListener>(
+				this.eventHandlersForAllSources);
+
+		for (EventListener eventHandler : copyOfEventHandlersForAllSources) {
+
+			this.logger.log(Level.FINE, "Informing event listener "
+					+ eventHandler + " about recently observed event " + event
+					+ " from source " + source + "!");
+			eventHandler.handleEvent(event);
+		}
+
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "observeEvent");
 	}
@@ -229,11 +478,17 @@
 			}
 		}
 
+		// remove from event listeners for all sources
+		if (this.eventHandlersForAllSources.remove(eventListener)) {
+			logger.log(Level.FINE, "Removed event listener!");
+		}
+
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "removeEventListener");
 	}
 
-	public synchronized void waitForAnyOccurence(EventSource source, Event event) {
+	public synchronized void waitForAnyOccurence(EventSource source,
+			EventType event) {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "waitForAnyOccurence",
@@ -257,7 +512,7 @@
 	}
 
 	public synchronized boolean waitForAnyOccurence(EventSource source,
-			Event event, long maximumTimeToWaitInMillis) {
+			EventType event, long maximumTimeToWaitInMillis) {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "waitForAnyOccurence",
@@ -291,7 +546,7 @@
 	}
 
 	public synchronized void waitForNextOccurence(EventSource source,
-			Event event) {
+			EventType event) {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "waitForNextOccurence",
@@ -314,14 +569,14 @@
 	}
 
 	public synchronized boolean waitForNextOccurence(EventSource source,
-			Event event, long maximumTimeToWaitInMillis) {
+			EventType type, long maximumTimeToWaitInMillis) {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "waitForNextOccurence",
-				new Object[] { source, event, maximumTimeToWaitInMillis });
+				new Object[] { source, type, maximumTimeToWaitInMillis });
 
 		// check parameters
-		if (source == null || event == null) {
+		if (source == null || type == null) {
 			IllegalArgumentException e = new IllegalArgumentException();
 			this.logger.throwing(this.getClass().getName(),
 					"waitForNextOccurence", e);
@@ -333,12 +588,12 @@
 		if (maximumTimeToWaitInMillis < 0) {
 
 			// wait forever
-			while (!this.hasEventOccured(source, event)) {
+			while (!this.hasEventOccured(source, type)) {
 
 				this.logger.log(Level.FINEST,
 						"We will wait infinetely for the next occurence of "
-								+ "event " + event + " from source " + source
-								+ "...");
+								+ "event type " + type + " from source "
+								+ source + "...");
 				try {
 					wait();
 				} catch (InterruptedException e) {
@@ -347,14 +602,14 @@
 
 				this.logger.log(Level.FINEST,
 						"We have been notified about an observed event while "
-								+ "waiting for events of type " + event
+								+ "waiting for events of type " + type
 								+ " from source " + source
 								+ "; need to check whether the observed event "
 								+ "is what we are looking for...");
 			}
 
-			this.logger.log(Level.FINE, "Waiting for occurence of event "
-					+ event + " succeeded!");
+			this.logger.log(Level.FINE, "Waiting for occurence of event type "
+					+ type + " succeeded!");
 
 			// log exiting and return result
 			this.logger.exiting(this.getClass().getName(),
@@ -367,12 +622,12 @@
 			long endOfTime = System.currentTimeMillis()
 					+ maximumTimeToWaitInMillis;
 			long timeLeft = 0;
-			while (!this.hasEventOccured(source, event)
+			while (!this.hasEventOccured(source, type)
 					&& (timeLeft = endOfTime - System.currentTimeMillis()) > 0) {
 
 				this.logger.log(Level.FINEST, "We will wait for " + timeLeft
-						+ " millis for the next occurence of event " + event
-						+ " from source " + source + "...");
+						+ " millis for the next occurence of event type "
+						+ type + " from source " + source + "...");
 
 				try {
 					wait(timeLeft);
@@ -382,18 +637,19 @@
 
 				this.logger.log(Level.FINEST,
 						"We have been notified about an observed event while "
-								+ "waiting for events of type " + event
+								+ "waiting for events of type " + type
 								+ " from source " + source
 								+ "; need to check whether the observed event "
 								+ "is what we are looking for...");
 			}
 
 			// determine result
-			boolean result = this.hasEventOccured(source, event);
+			boolean result = this.hasEventOccured(source, type);
 
-			this.logger.log(Level.FINE, "Waiting for next occurence of event "
-					+ event + " from source " + source
-					+ (result ? " succeeded!" : " did not succeed!"));
+			this.logger.log(Level.FINE,
+					"Waiting for next occurence of event type " + type
+							+ " from source " + source
+							+ (result ? " succeeded!" : " did not succeed!"));
 
 			// log exiting and return result
 			this.logger.exiting(this.getClass().getName(),

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -11,6 +11,7 @@
 import de.uniba.wiai.lspi.puppetor.Event;
 import de.uniba.wiai.lspi.puppetor.EventListener;
 import de.uniba.wiai.lspi.puppetor.EventManager;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.Network;
 import de.uniba.wiai.lspi.puppetor.NetworkState;
 import de.uniba.wiai.lspi.puppetor.NodeState;
@@ -271,7 +272,8 @@
 
 		// fail on first node that is not up
 		for (ProxyNode node : this.nodes) {
-			if (!eventManager.hasEventOccured(node, Event.NODE_CIRCUIT_OPENED)) {
+			if (!eventManager.hasEventOccured(node,
+					EventType.NODE_CIRCUIT_OPENED)) {
 
 				// log exiting and return false
 				this.logger.exiting(this.getClass().getName(), "allNodesUp");
@@ -336,7 +338,6 @@
 				this.authorizedDirectoriesFingerprints.add(dirNode
 						.determineDirServerString());
 			}
-
 		}
 
 		// configure nodes
@@ -424,13 +425,6 @@
 		this.logger.entering(this.getClass().getName(), "createProxy",
 				new Object[] { nodeName, controlPort, socksPort });
 
-		// check state
-		if (this.networkState != NetworkState.CONFIGURING_NODES) {
-			IllegalStateException e = new IllegalStateException();
-			this.logger.throwing(this.getClass().getName(), "createProxy", e);
-			throw e;
-		}
-
 		// create proxy node; parameter checking is done in constructor
 		ProxyNodeImpl proxy = new ProxyNodeImpl(this, nodeName, controlPort,
 				socksPort);
@@ -451,13 +445,6 @@
 				new Object[] { nodeName, controlPort, socksPort, orPort,
 						dirPort });
 
-		// check state
-		if (this.networkState != NetworkState.CONFIGURING_NODES) {
-			IllegalStateException e = new IllegalStateException();
-			this.logger.throwing(this.getClass().getName(), "createRouter", e);
-			throw e;
-		}
-
 		// create router node; parameter checking is done in constructor
 		RouterNode router = new RouterNodeImpl(this, nodeName, controlPort,
 				socksPort, orPort, dirPort);
@@ -503,14 +490,8 @@
 		return this.networkState;
 	}
 
-	/**
-	 * Returns the working directory of this network configuration which is in
-	 * test-env/networkName/.
-	 * 
-	 * @return Working directory of this network.
-	 */
-	File getWorkingDir() {
-		return workingDir;
+	public File getWorkingDirectory() {
+		return this.workingDir;
 	}
 
 	public boolean hupUntilUp(int tries, long hupInterval)
@@ -540,7 +521,7 @@
 		for (ProxyNode node : this.nodes) {
 			eventManager.addEventListener(node, new EventListener() {
 				public void handleEvent(Event event) {
-					if (event == Event.NODE_CIRCUIT_OPENED) {
+					if (event.getType() == EventType.NODE_CIRCUIT_OPENED) {
 						sleepingThread.interrupt();
 						eventManager.removeEventListener(this);
 					}
@@ -605,16 +586,18 @@
 			throw e;
 		}
 
-		// iteratively shut down all nodes; if an exception is caught, continue
-		// shutting down the other nodes and throw the first exception
+		// iteratively shut down all running nodes; if an exception is caught,
+		// continue shutting down the other nodes and throw the first exception
 		// subsequently
 		TorProcessException firstCaughtException = null;
 		for (ProxyNode node : this.nodes) {
-			try {
-				node.shutdown();
-			} catch (TorProcessException e) {
-				if (firstCaughtException != null) {
-					firstCaughtException = e;
+			if (node.getNodeState() == NodeState.RUNNING) {
+				try {
+					node.shutdown();
+				} catch (TorProcessException e) {
+					if (firstCaughtException != null) {
+						firstCaughtException = e;
+					}
 				}
 			}
 		}
@@ -752,4 +735,8 @@
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "writeConfigurations");
 	}
+
+	public String getName() {
+		return this.networkName;
+	}
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -3,14 +3,10 @@
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.List;
@@ -18,9 +14,8 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import net.freehaven.tor.control.EventHandler;
 import net.freehaven.tor.control.TorControlConnection;
-import de.uniba.wiai.lspi.puppetor.Event;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.NodeState;
 import de.uniba.wiai.lspi.puppetor.ProxyNode;
 import de.uniba.wiai.lspi.puppetor.TorProcessException;
@@ -163,7 +158,7 @@
 		this.eventManager = network.getEventManagerImpl();
 
 		// create working directory
-		this.workingDir = new File(this.network.getWorkingDir()
+		this.workingDir = new File(this.network.getWorkingDirectory()
 				.getAbsolutePath()
 				+ File.separator + nodeName + File.separator);
 		this.workingDir.mkdirs();
@@ -182,14 +177,9 @@
 		this.configuration.add("ControlPort " + controlPort);
 		this.configuration.add("SocksPort " + socksPort);
 
-		// TODO why is this not the standard????
-		this.configuration.add("RunAsDaemon 0");
+		this.configuration.add("Log info stdout");
+		this.configuration.add("Log info file log");
 
-		// TODO setting log level to lower level than NOTICE leads to error when
-		// connecting via control port! why?
-		this.configuration.add("Log notice stdout");
-		this.configuration.add("Log debug file log");
-
 		// TODO do we need this in all nodes or only in directory nodes?!
 		this.configuration.add("DirAllowPrivateAddresses 1");
 
@@ -485,9 +475,10 @@
 		this.logger.entering(this.getClass().getName(), "hup");
 
 		// check state
-		if (this.nodeState != NodeState.RUNNING) {
+		if (this.nodeState != NodeState.RUNNING || this.conn == null) {
 			IllegalStateException e = new IllegalStateException(
-					"Cannot hup a process when it's not running!");
+					"Cannot hup a process when it's not running or there is "
+							+ "no connection to its control port!");
 			this.logger.throwing(this.getClass().getName(), "hup", e);
 			throw e;
 		}
@@ -502,6 +493,8 @@
 			throw ex;
 		} catch (NullPointerException e) {
 			// TODO sometimes, this throws a NullPointerException...
+			this.logger.log(Level.SEVERE, "is conn null? "
+					+ (this.conn == null));
 			this.logger.log(Level.SEVERE,
 					"NullPointerException while sending HUP signal to node "
 							+ this.toString());
@@ -541,6 +534,10 @@
 		// change state
 		this.nodeState = NodeState.SHUT_DOWN;
 
+		// fire event
+		eventManager.observeInternalEvent(System.currentTimeMillis(), this,
+				EventType.NODE_STOPPED, "Node stopped.");
+
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "shutdown");
 	}
@@ -588,28 +585,16 @@
 
 				// read output from Tor to parse it
 				String line = null;
-				boolean waitingForControlPort = true;
 				try {
-
 					while ((line = br.readLine()) != null) {
-						logger.log(Level.FINEST, line);
-
-						// if control port has not been opened, check log
-						// statement for Tor to say this
-						if (waitingForControlPort
-								&& line.contains("Opening Control listener on")) {
-							logger.log(Level.FINE, "Observed event of type "
-									+ "Event.NODE_CONTROL_PORT_OPENED");
-							eventManager.observeEvent(ProxyNodeImpl.this,
-									Event.NODE_CONTROL_PORT_OPENED);
-							waitingForControlPort = false;
-						}
+						eventManager.observeUnparsedEvent(ProxyNodeImpl.this,
+								line);
 					}
 				} catch (IOException e) {
 
 					// don't throw this exception, nobody will catch it!
 					String reason = "IOException when reading output from Tor "
-							+ "process!";
+							+ "process " + nodeName + "!";
 					logger.log(Level.WARNING, reason, e);
 				}
 
@@ -646,12 +631,12 @@
 		this.logger.log(Level.FINER,
 				"Waiting for Tor to open its control port...");
 		if (!this.eventManager.waitForAnyOccurence(this,
-				Event.NODE_CONTROL_PORT_OPENED, maximumTimeToWaitInMillis)) {
+				EventType.NODE_CONTROL_PORT_OPENED, maximumTimeToWaitInMillis)) {
 
 			// Tor did not open its control port
-			this.logger.log(Level.WARNING,
-					"Tor did not manage to open its control port within "
-							+ maximumTimeToWaitInMillis + " millis!");
+			this.logger.log(Level.WARNING, "Tor node " + this.nodeName
+					+ " did not manage to open its control port within "
+					+ maximumTimeToWaitInMillis + " millis!");
 
 			// log exiting
 			this.logger.exiting(this.getClass().getName(), "startNode", false);
@@ -686,93 +671,13 @@
 		}
 		this.logger.log(Level.FINE, "Connected to control port successfully!");
 
-		// register event handler at Tor process
-		EventHandler handler = new EventHandler() {
-
-			public void bandwidthUsed(long read, long written) {
-				// TODO do we need this information?
-				// logger.log(Level.FINEST, "bandwidthUsed(read, written) = "
-				// + read + ", " + written);
-			}
-
-			public void circuitStatus(String status, String circID, String path) {
-				// TODO do we need this information?
-				// logger.log(Level.FINEST,
-				// "circuitStatus(status, circID, path) = " + status
-				// + ", " + circID + ", " + path);
-			}
-
-			public void message(String severity, String msg) {
-				logger.log(Level.FINEST, "message(severity, msg) = " + severity
-						+ ", " + msg);
-				if (msg.contains("Uploading rendezvous descriptor")) {
-					logger.log(Level.FINER, "Observed event of type "
-							+ "NODE_RSD_PUBLISHED");
-					eventManager.observeEvent(ProxyNodeImpl.this,
-							Event.NODE_RSD_PUBLISHED);
-				} else if (msg
-						.contains("Tor has successfully opened a circuit.")) {
-					logger.log(Level.FINER, "Observed event of type "
-							+ "NODE_CIRCUIT_OPENED");
-					eventManager.observeEvent(ProxyNodeImpl.this,
-							Event.NODE_CIRCUIT_OPENED);
-				} else {
-					// log statement did not contain anything of interest for
-					// us...
-				}
-			}
-
-			public void newDescriptors(List orList) {
-				// TODO do we need this information?
-				// StringBuilder sb = new StringBuilder(
-				// "newDescriptors(orList) =\n");
-				// for (Object o : orList) {
-				// sb.append(o + "\n");
-				// }
-				// logger.log(Level.FINEST, sb.toString());
-			}
-
-			public void orConnStatus(String status, String orName) {
-				// TODO do we need this information?
-				// logger.log(Level.FINEST, "orConnStatus(status, orName) = "
-				// + status + ", " + orName);
-			}
-
-			public void streamStatus(String status, String streamID,
-					String target) {
-				// TODO do we need this information?
-				// logger.log(Level.FINEST,
-				// "streamStatus(status, streamID, target) = " + status
-				// + ", " + streamID + ", " + target);
-			}
-
-			public void unrecognized(String type, String msg) {
-				// TODO do we need this information?
-				// logger.log(Level.FINEST, "unrecognized(type, msg) = " + type
-				// + ", " + msg);
-			}
-		};
-		this.conn.setEventHandler(handler);
-
-		// register for logging events of level INFO and higher using controller
-		List<String> events = new ArrayList<String>();
-		events.add("INFO");
-		events.add("NOTICE");
-		events.add("WARN");
-		events.add("ERR");
-		try {
-			this.conn.setEvents(events);
-		} catch (IOException e) {
-			String reason = "Could not register event handler at Tor process!";
-			TorProcessException ex = new TorProcessException(reason, e);
-			this.logger.throwing(this.getClass().getName(), "startNode", ex);
-			throw ex;
-		}
-		this.logger.log(Level.FINE, "Registered event handler at Tor process!");
-
 		// set state to RUNNING
 		this.nodeState = NodeState.RUNNING;
 
+		// fire event
+		eventManager.observeInternalEvent(System.currentTimeMillis(), this,
+				EventType.NODE_STARTED, "Node started.");
+
 		// log exiting and return with success
 		this.logger.exiting(this.getClass().getName(), "startNode", true);
 		return true;
@@ -819,4 +724,12 @@
 		// log exiting
 		this.logger.exiting(this.getClass().getName(), "writeConfiguration");
 	}
+
+	public String getName() {
+		return this.nodeName;
+	}
+
+	public int getSocksPort() {
+		return this.socksPort;
+	}
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/RouterNodeImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/RouterNodeImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/RouterNodeImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -129,6 +129,46 @@
 		this.logger.exiting(this.getClass().getName(), "RouterNodeImpl");
 	}
 
+	public synchronized String determineFingerprintBase32()
+			throws TorProcessException {
+		String fingerprint = determineFingerprint();
+		fingerprint = fingerprint.substring(fingerprint.indexOf(' ') + 1);
+		byte[] bytes = new byte[20];
+		int j = 0;
+		for (String part : fingerprint.split(" ")) {
+			bytes[j++] = (byte) Integer.parseInt(part.substring(0, 2), 16);
+			bytes[j++] = (byte) Integer.parseInt(part.substring(2), 16);
+		}
+		int i = 0, index = 0, digit = 0;
+		int currByte, nextByte;
+		StringBuffer base32 = new StringBuffer((bytes.length + 7) * 8 / 5);
+		String base32Chars = "abcdefghijklmnopqrstuvwxyz234567";
+		while (i < bytes.length) {
+			currByte = (bytes[i] >= 0) ? bytes[i] : (bytes[i] + 256);
+			if (index > 3) {
+				if ((i + 1) < bytes.length) {
+					nextByte = (bytes[i + 1] >= 0) ? bytes[i + 1]
+							: (bytes[i + 1] + 256);
+				} else {
+					nextByte = 0;
+				}
+				digit = currByte & (0xFF >> index);
+				index = (index + 5) % 8;
+				digit <<= index;
+				digit |= nextByte >> (8 - index);
+				i++;
+			} else {
+				digit = (currByte >> (8 - (index + 5))) & 0x1F;
+				index = (index + 5) % 8;
+				if (index == 0) {
+					i++;
+				}
+			}
+			base32.append(base32Chars.charAt(digit));
+		}
+		return base32.toString();
+	}
+
 	public synchronized String determineFingerprint()
 			throws TorProcessException {
 
@@ -247,4 +287,13 @@
 		return super.toString() + ", orPort=" + this.orPort + ", dirPort="
 				+ this.dirPort;
 	}
+
+	public String getName() {
+		String fp = "";
+		if (this.fingerprint != null) {
+			fp = this.fingerprint.substring(this.fingerprint.indexOf(" ") + 1);
+			fp = fp.substring(0, 4);
+		}
+		return this.nodeName + " (" + fp + ")";
+	}
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java	2007-08-11 14:38:11 UTC (rev 11077)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java	2007-08-11 15:39:12 UTC (rev 11078)
@@ -9,7 +9,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import de.uniba.wiai.lspi.puppetor.Event;
+import de.uniba.wiai.lspi.puppetor.EventType;
 import de.uniba.wiai.lspi.puppetor.ServerApplication;
 
 /**
@@ -63,8 +63,10 @@
 				in.read();
 
 				// send event to event manager
-				eventManager.observeEvent(ServerApplicationImpl.this,
-						Event.APPLICATION_REQUEST_RECEIVED);
+				eventManager.observeInternalEvent(System.currentTimeMillis(),
+						ServerApplicationImpl.this,
+						EventType.SERVER_RECEIVING_REQUEST_SENDING_REPLY,
+						"Receiving request.");
 
 				// write response
 				PrintStream out = new PrintStream(handleSocket
@@ -198,8 +200,8 @@
 	}
 
 	/**
-	 * Event manager to which all events concerning this server application are
-	 * notified.
+	 * Event manager to which all events concerning this server application
+	 * are notified.
 	 */
 	private EventManagerImpl eventManager;
 
@@ -327,4 +329,8 @@
 				+ this.serverApplicationName + "\", serverPort="
 				+ this.serverPort;
 	}
+
+	public String getName() {
+		return this.serverApplicationName;
+	}
 }



More information about the tor-commits mailing list