[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r11767: added examples 5 and 6 to howto, made clients and servers re (in puppetor/trunk: . doc lib src/de/uniba/wiai/lspi/puppetor src/de/uniba/wiai/lspi/puppetor/examples src/de/uniba/wiai/lspi/puppetor/groovy src/de/uniba/wiai/lspi/puppetor/impl)



Author: kloesing
Date: 2007-10-05 08:12:58 -0400 (Fri, 05 Oct 2007)
New Revision: 11767

Added:
   puppetor/trunk/lib/torctl.jar
Removed:
   puppetor/trunk/lib/bcpg-jdk16-137.jar
   puppetor/trunk/lib/bcprov-jdk16-137.jar
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingProxiesWithLongRunningNetwork.java
Modified:
   puppetor/trunk/LICENSE
   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/ClientEventType.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenService.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenServiceEventType.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeEventType.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerApplication.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerEventType.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/LongRunningNetwork.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingRoutersWithLongRunningNetwork.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/groovy/RmiPuppetzShell.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java
   puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/HiddenServiceImpl.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/ServerApplicationImpl.java
Log:
added examples 5 and 6 to howto, made clients and servers remotely available

Modified: puppetor/trunk/LICENSE
===================================================================
--- puppetor/trunk/LICENSE	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/LICENSE	2007-10-05 12:12:58 UTC (rev 11767)
@@ -33,30 +33,39 @@
 
 
 ===============================================================================
-The Bouncy Castle Crypto Package is distributed under this license:
+The Tor controller demonstration code is distributed under this license:
 
-Copyright (c) 2000-2006 The Legion Of The Bouncy Castle
-(http://www.bouncycastle.org)
+Copyright (c) 2005, Nick Mathewson, Roger Dingledine
 
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE. 
+    * 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.
+
+
 ===============================================================================
 Groovy is distributed under this license:
 

Modified: puppetor/trunk/doc/howto.pdf
===================================================================
--- puppetor/trunk/doc/howto.pdf	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/doc/howto.pdf	2007-10-05 12:12:58 UTC (rev 11767)
@@ -1,540 +1,657 @@
-%PDF-1.4
+%PDF-1.3
 %���
 5 0 obj
 <</Length 6 0 R/Filter /FlateDecode>>
 stream
-x��Y�G���8o�C�_x��Fą�a$�,94��mI�����5#� ���\��>����W�}���~�/�O_>����5�˯/�^.�]�;\���X��:��Z��_�++#��.AKw|F7�������;��F��Z���pV�c8\^a��=���_��y+���'��:�;��q�L{ƚ��OI����:uW�:���	1ȁP
-�����*:���QFƎ�Q��/�%&Xl���<�k�=%���*�*��?~q���B�w��7ۜD�?Ky���E�AH�(c��<Y�>!B�\$��������(-���PMP�j�ց{t)X
-Ni�#M(sb&죽�&�B����}g�������N���H�ډ9R-��bf.�5���֋��qT�wjC�G����A���K���E��+r%�;��b*�E%(Z�9>_�U�i7'-�N{��el�u`�K�"U�ɢ��2J�.%(yJ�^;[f0��`��d
-����<�j�.I���M+L�:+2*���
-�#ShO$�2��"�5�����
-أ�l�X�á
-CHa�Q6y"���<�*/gaB2(H-�z ���,d��`٠�<��M�-A�������I���������WiR�U���(�h���,`
-�B[�1e�
-ƴs�`8�LP�M}��N,�J��-�g������&�)̖�zVȈ�LUȁ��X�0��w���$W��^p��#�z1��x����i(|M7���~�����q���!t��H�~j-ɬ`z~н֒q��O�����"����ҳ��n���
-��}(�^p���
-v=�x���ZQ���L[�é��19�S����b۪�k%ڹs���U���fFog~|-�Z�J���}SX#Y��-�4o��J�x.�Φ�Bft]Q��a��t��(��T`7�e����_݄�M��Ro�v�Hvj&y����f�% .�ԡ�Vpn��h���(ԒL�5}X�H�*F�M�������\p�p�R@����9���d�XvlI#F�޴~�ҡ�vBu9�������um�BRmX�s�/vv�)�P
-�^>��Gm0��̆�djZ�/�Qw�����w��*�J�F���M�
-H��!�t"�-��hdE��MG�nR�4�
-����KEd3V���0�ގ�z��T!�,���S3v��U�����ͻ�Y4��F܍F���>��7;������YŬ��"��N���LEUj9=K[�/��z:2�^���\�S^�f����XqNr��im��MxL�NлΑk�R�����Νz9���� v���U��#�G�j��u��W�^E�AP���]����i��Yzș7��{������1c�Cr��z���zK�7ܺr��To�צ$�%�~uZ��7t�O����"WP+n����
-z�Bݷ�(Efcyl�^��k������v��j���^o�fy=
-(�;=)������g���B�ε�i�t)�����f����'�1^V
-~�'��Ϲ��ě<�\<j^�A��ܜɪ��"�=9wC��3D�����ϋ�����f�ܚ`���5��G8�:�eLh�f�)qۍ	�޳ɚT��Hk&��5@��L��=tEj�
-���K�o���>�L*��@_>u������{6��<OWg�ؼ99��@������I{�y{���䝫�4�Tzll#;���������ݵ}�-�K���M�G�0��};����l<o�[�k���;k��u��� wϸY|y*� u�[��K,�����rP�rp��T�K�=���Ux��ͤ����6�>�?�%����}d���xx��v�O����~s�����-��HB��_>SU�	)�� �/O;��PsM�-�?rB�ݚ���t�J�{,�&(a%l�|y��w錪x^	̕+}C��C���LCx�r�]}�����K��NU��i��}HJ�vAŇ���)2+x��[[�ܶ~�1o����Eڢh�d�#{
+���'�����tHI����_9��w��W�{|q�����^���Kl�;���>�ȇ���w�^G��|q��m�ы���K�h�σr���V��r���ia|��6���z��d�U�����ot����ܡL�ݯ{��.j�����Cr�������Ft���g������RHս ����b�+���.�	(�>��y�~�y5�~��	��y�7h9��������7�̋ح�Y(�JZP��y��
+�"
+$������*V?�ҀV�� �����r+��c>��&�t��XWAhb�w����~q�M��aF�>h�lgF'�&=4B87r�\���
+)������FP�!ʌ��(2?�<��M��%�z���K~��4Ѻyb��B��o0�+���z�B��u���f���������
+��zv��Y}��O�7���<����
+�&�J[|�/����(ॵ�>l�������7�����F�Ӊ���Z0�^��\nA`�A�j���p
+��nO�Զ�Br}J�>�xZ�,k�?k*>?���)}��c? ������>#��]=f�3oN�7^�VA8g��wbӆ@�tO+���+s3��S����`(s9lw�z������ra���v����q[n��C��������+�Q���������	��5���3�Fu�+o�)H��d=�A���ۂT��e؊֧�N�L��,��5�gy��������w@��7��M�UZ	?��XM�)�i�j���P�;2��rbb��bori�C?q�e�� �3A>����q�y�/��Wڇ���`�B�B���Y��"��WQ|�:�'%NSi����y6B�b�}�_�0\]�0�+�i�t�F}�g˸���jztŭj�������2(x�:�U�_Pq���dk�}RH��]�6�b��ݧ߫�#moE�5ww,�����Jr���#�n_,���v�3��+���+S�8�{��%_�m�+L{G��  Q`���@(ޛ�I�
+H���m���Mp!4��RoZ����N���j� �����m�Lm�=j����bKB-k�a�t�2�����a�v~Q��だa�2�G�M-?i�����Ǜ:%Z�#����o*#k[>ck,��(?L���I���"�����ɝź��h6��͝J��:�D��e��8BD������EE�B#R�ܝ���DzG/K��`�EF����f�U���O*��9OR�Y��GmS���fc$��@ڹ�xCq���@֚�WD	��R����Q؆��aQ+!�JC~���-e�h�G��24�b��������3�J�~)�����CN/k�$��\�)��Np�3��L|�5��p\f5��4��!6��(t����(�q�W���fF	�����~�ʮ8�x�,�@���'��R?����O���
+�Z��1���#�������]������Z�`�i�@]G�K��Ɔ �����W���K��*���R���sf��M�M�W's��"������R��NW�1��������_d2L��m
+E$���B��:3G�:��lR�7���T�����Vj7
+��xe��>g������k&L�KxO�&���!G�.%g��^u�j�X+�eM֠���8eR����S��C��� CC���!���Y�p+�U�m��Fq��O����2���ۀm`�_�N�0����+A'��T�}䔛YU���6է2���ߺ�Q{l�t�����#Yn*��+�ж�y�W�Io��^V�qC��c�x���s�k�<r!3^��s��;/���ݽ���g��<2�݋�*5�����7@&�Qb���B�@��.��LJ��4����DH�T��qG@e{�h��|nh`���'�%H,9�7�9d�+�%O�SVޠ���ԛ%aJ�J��`���+Έ�����p��vV	���_����z�U�;�J��"=��*�q�%!"����mȅb���Y��V|�Z�d��-��['Ǯ�e��^G?��"�X~��q�Jg��Wr��A�8Y��c�L��Ht�|B6g'My@R��%��,PS�։	��չ�+g�SĽӯ��K�P$K(�A���xV��I�!K��UH��^�?[_a��"
+TRS��2B�cZL_6��ϫ��	�#�CtGٶ�'��P�endstream
 endobj
 6 0 obj
-4898
+4171
 endobj
 25 0 obj
 <</Length 26 0 R/Filter /FlateDecode>>
 stream
-x��o�~�Na��w2oI��	��E�˲e7��ؖ��wh���d�g��3�sY�����^����.�~9�����>���9K���Gi�8�pǭn���^-޸���އ�v��E�fw���'�jwo��r�b�Få\W��-&��G����=N�K���S���f�᰻ޟH�/BY2N�%���E��EÚ�/�c7K��+���䕏�^ã˪����������� $lĩ]�New�b���x򀣄c;K�1�(k7��8�����~$�Y�1�/����"��t��� ��f���R&<2MIt��� �X�I�hx�
-k��^D�,�&��{MPj]E��{���Ә�}J@��N!�����"
-
-}W"�$�6����������7:�"k�#�������N��7�(���/���P��B{���EIDNΝ�1b��o(eM�VN���,L (�����j�j�oWϛ�1���+�ɶ
--\�^hbxdY�@ƙE�`Q
-��Q{7,Q��"���Q&,JT5�@Q�K��-��������#'"+^��	�>��u&���p5܉G��N9��_=�	�\��D[6ئ0Ԙ�xB�4I+"`^��H(�����7p����j'豦�~�����l/�-�&���V�v�Q,�],����꺒���/�6�Da��R�nq��o���Щk&����N���9�~�,\�-S�5�@N��uЌq���@��s�*bOB�2'�.�cz���.%C��L&�P������-Q�?F��C�W7%-����ƹ��>&����u%���;�Z����N����b�vF�����n�d1N��T,��G�.������بà��W���΋溶�Ra�WU�HEs��9��&�w3[L�+���s*-n�ʞ��Gϣ�͔$Jx݅җ-�i���$6ŗMM3'G$�+2�gd�����(�I.6e���ӂ�ś� Q_��׽k|��k��Y�����h��&�ɝd������L?V�dI͎lN�8��w�>Z�Y(W|+�bZpD��z���TW�ケ����<��:�8ߍ�����,�Q4w�Q�;�5I�������I�U7@H��!��|�
-�\P��e`l���IC��=-—h��4�16)�ꕄ������h���N���j�1�������4z�`Zy-��v��(o�k��qpc�>5��.���ؤ���2v9�1�$��Ƙ�3E� ��DK���T�غ�{���뷈�3mX
-�a��)�}^���g�W�@h[ɯ����[�揢R8x�0[�h�����z��I�v1�6K��;��-	������کs�
-i9��?���V�3�t�?�������\QmV�����l4-%e\�i�?4
-E�?W%Ҋ��i��=͏5K���(2�:�����os<����M������/�}!��3-�b�L����F�����ۉ�����l�L�2��9������9����ٶ}K
-���)&'�ż	/B���� ����ٖ,0���-�j€]n�M��($
-H�$|�Pl���n������&����u0��OHm؛푩�oU>���O7����3[S�w9���#�T����B|+x��\_o�ק�O�o��H�ں��H���b�_*@?ag��K�d;�d�����>q>����W��l<���:���ח0H���>���6C�܍n�
+~�9�A+�[3�C��z�.�Ҹa������𩴛�0������{��.����+R�$3�k�6��g1a�U�		1
+`�s�#�*����.DK����_���9����_�@��:����攒΢Ե�~�*���E��`�ћi��2����#����L�)#ϷB�u~���D7]l������8H08�G�(�I�^�������1 ��S9ؖ遴X{ʅOԌq��W,����o���>�����v6܎�Og����傢�[.��۠�`:JӾ����	���S�l5���5��bj���]tN~C���/[�Ucy�!*+2H�����+�EA��'��� -�/�F?z���up�d��ӷcb��cP&lmǰH�	9OE:[x���|����l�q��=\�=�C����b���a���������Z���M+͊U��Ym��
+
+T*�4˕�����>S;1�"�F����d����֦2t���0~�%DHglL؇7����x��,T}U@C�Y��8�3��2�!�޸�53˾��_%����z��FP���?.��]GJ� �M�-U�K��$5n������W�o�)�h��Y��%h���M�#�DJ�����q2�q"-pm��u�m���S�������+X��0���3w��ewX9�%�N+\�b�"%�L���� �3Q-����هk3���l�
+cFo����]��X�yWP�f�>2��OL
+Y�B�Z�u`#��#P��Ƕ��)��eĝ]N��`Vj\�]狉y�|�j��� N��v>lVζF+�XO�.�73h��%����^I�ź�@h3��RWh�ߐ�	
+q>F�j��Y.���͉,9��N�ۡ��\���s]�+F�M?ޱBw'f<�ƒ0��I�YY�	IǢ;B[��H$SN����2���F%���xt��t
+/oO7�5K_�Ln5�+L)>�c�:�>�2rrK~\��N%��CA) ����|�A���J	Q��@�K#?/��k�<(�|2��g*�L�c��Q��9��������	߂�_}ܿ�	7:��N]N�����HS�����caYj˽>�o�yv�
+�x�r��ՙ�:�Y��aʝϔyᝊX���D¶8W���<�+�i��mȂQ�Q%�]яQ��3���y���mG�����Ph��� ���c3�y�"�U�+A"[r]$AV�GL�#ʕ�y5�,��Hx׆ͳ��T�W��`�b1~��4����u�Ƞ9��}Y囇`�oA]\�耤5m�6�r�]�mt��+6��RQ?�MI�u`��ȅ2�ą���c��f�73��ۺ���j#Y����\Z�^��+�V�;���R�V�+V,��.F��RD���e��љ~4�
+�-?��in.�씟��?P} ���hl�Lut+��i�@z�N��E����!���<\S�:ą�Z�q?IB����7bc�A)�����4tD�|�bٱ���z���p�6M�
+�HL� `��*`�D�S@ҡ*6 �v45�����[�[)��/g��d�^qОC#�~:�L�v�[�x$�;0"�Lqf�1��ou�O���U��.B�<5O��J�~uĀ���R�*1k�ӧ�0���	7|T��
+*�w+!R[��䎣�o)��B�O��������<���7���o��Lzw�#�N_K����j���v(+t?Ɖ��sݚ��c� 3Y�J�{����!�cY$\߁EL^ �밴PY.��:���n�;2W��i$]o\DiU�Ơ�d��Č��;�����Eqo��Lq<���~��c#?&Hv�!��e����.7���Y�F���ނdC�,
+n�V�����_� endobj
 26 0 obj
-4713
+4408
 endobj
-32 0 obj
-<</Length 33 0 R/Filter /FlateDecode>>
+34 0 obj
+<</Length 35 0 R/Filter /FlateDecode>>
 stream
-x��o]Gr�a ��ģ�y;���h�?��HIVD��Dɚ��^�����Noյ|����������>ؕ?ov_?��T�%:�鋓���;/��8��ӣ�֜~�{�z�_��}���e�> k \�B4�Z#Y�|�줤b��߶N������}�a�n���ӊ���Co|�]q�'s>�ܚ��F�p�'��-������dO�����]a��I�'�{���$��Дw]�����ś�{�
-Q-�0�}���J����I�O��iaC�y��wH
-����*���Lb�H%4���L:�^�Z�fK�D����i�=�|j��J���F���@4L���_�*�L�ࠁ[��J}�Ek
-U���j-a#�X]OW��A/��pi!��1�F]�|�j5�����=oݯӌ
-�m
-���r-,�=<�:�����"�	/2�4�Gt�%�������;���x�����m���N�	@���������	�ڰX�&V7���������Z�{�ڦ*H/��!=��@��	�"[���r�@������^����ڐ��E(�����M즅�帧�%�Lł꘸�]%�4V���" T��'mٞ-M�h�7}#}��8(�C�~?*�0�s���k���Ǥ&b���&_�Ȧ��{�-˼��@qI��)dNW]6T�H!!���f��{����������]^�W"�]2!u@G��e��'�Tf?����������jk�tEg��#�erf$�Z�(�����	���GcU���`�0�;��΀Ʌ֞��_�O}�L�(�������v��% 6}��Ƚ���#�qTp��nx`�Ǹ,P\����D��(��-��W%ڂAC?w���_�8������r��^�
-0L(S0�̪���m!�-�>�Ws�M�pO�
-�A|���A�@-��A���6�"U{~���cR1.�������,2fCS[��f�o�����*i�������/�0�@�&�9x�I�ЯsX��D��K�a�߈���WX�Xt#��)h-��?5s�C�`�I��������gƕ�����wf�3����΄v�Y�A��_Lxa�$Y}��_����qY��6��(�������s���֯췤��6�uݰ�:VH��ҒY�Ƙj��0���f-�e� Vڴ�����&X�ѕ#
-�+Oo�����K�wю�)"F6���z?��$ΐR�5t3d*z�F66¶��i�CZ�/K8*�6-������6��WHg�#�v$���-4
-����:�Pay�h�;���Z��|rҪ�{_̞\!tVb��M�\wM�ڵ�W��89�����s%������Sք��1ܘ�k¢esG�
-�v�Ȩ6B�(߶�����������ex3g��c�Żn�֖��RO���FM�ͫɥ
-�u�^+۔�zIu&N����dpT���~^��������Wu�L��b�;��w
-��m(_�^�������9qt��{p����?%shC��^7l��6����U��UD-s�u
-R<qR�Q��ژ��:.��w"��-�����HV��H"���Gk�xtL���9�4�
-��ش>���,�����D�\f#��
-h�a{�0,p
-�x��^�i���*����s���#���sYRM刉�~u��-�Q�X�=mĥ����S%�b.[���-��%�k��J�\E=L�@xd��as׮��9z���,(����g���l���G`#Ol��QCq�ߟ���Q�k{�"��xs����mw��?����y���ʸ�Xak�+���L���P���%4$w`�<�ty	�wB��x�~���6%
-Z��n�����*xI�]�@<0B��8�?�J_2+x���\���E��>�A[4-��q��ɵ�R,���3�yx�'����3ùq�����ξ�8c����>�<��+k������Z�a��3�������$Y������!�1����~O/y����G{!ܨt��~��|{H5z5D�`%,D�	��)\�����&�AK��	��-���o@�.w�Hd��o2�s�L�w3��R�N�g�-L��"(�ط��
+�ܐrxs�A������g@Z��xe`���$��ast���LKÕv��%��N�d�YzPV+$�X2��r��Ɩ�15�=��w������EM1Ԭ�+�&P�mŞL�7AUP�pE�� �$n�H��H�2�
+�Ap!���G0RF��B�"s���m��B({�����4���L�hXpl�+�1C�h���s�@:xM�qD��F������Ae����+���������\��
+8"�8����: )
+Tz�zHG"Û>mă������\�l�!��m�{�D��<�A�mw��J܆��:wr��ge��t�7�eGRo��A�������R��v�L��y4���g�NE2�_H�
+���vJG��zCg7+�����|�D���3� �wt����D	33��O����bd����S�{3�쏸��Sv����,�D`7f�@b��C�ZN!	`��/�`f��+���SV�g �燧CF<��@�s(�Η�cxz�V-����;rI+�?pQ��	1�#�l5h�䣨�F
+zW����x)1:Sݎ��9Ҝ�����_������4�V��C�e�p�+"�̭
+^'d�����<������O<��*�z�%�L9J������6K�"L���������z
+�+k���-���.������e$�	�	?��`�1ZD�ma�;�h�4T	�K㏄e�H��pMk/����lr=\:W�Q�7��l�]���bT���9��}2�\�����E/�������g��P�T��{O��M쌨���j���;XLJ`a��0F5�;U�k���fd\G��`8�I�`.ܮ�T!���@�R��NZ�[ڮ��|�:�ϬK��i��I�2,/�=c������][]�K��T#]h���3�?nD�r�K���d;]�!Y9���Yפ濗�}�������d�xh�,�|Qz��ۢ�!z��(�I=��/A�-o,3L:�f��[���C�v+ ��/�!&�mT�O�<T��i�/\��kO�2��{����'Wd;a���y!٠��}F��y�ʏLo��*��W-n��}+!'^���+[��EO��"v|�F���n��
+�&�G��Է�l���"C"����F��Ḽ
+�m�Ӱn?�jTmցzW{��@k�k�?�s#�Y��$�H
+[M�E)0l�w,�y�S��]��U�g����Y�O�x������BD|�6�S�j�u͎vO�����b~��B���hZ��Dg_+�i�~�K��Uߥӣ� �Z����⣺�����tn`������m��%VyĪ΋��?=�SGqHnq4��^W�)B��sR��O��
+��nі�O/ ɺ�����-�����/�p'������;<�8�b�OuU����m�2���z�(� ��0���sM��
+W
+=k������u�����%�+gS��ߘАh�K���9|�w�	�Y�߻�	�ŏZ+r����n�endstream
 endobj
-33 0 obj
-5168
+35 0 obj
+3917
 endobj
 39 0 obj
 <</Length 40 0 R/Filter /FlateDecode>>
 stream
-x��[���?b�����`�
-��Tȃٵ���a����Z:R���]R)ʸ�����#���_����8������N�g6�������?)z����K���i��������n�����D�f~�̅�J��6j�0����z�Q����π���BnN��A�6��{�RR(��p�S+;9����Q��	���l�-ד1�5B	c�Fn��
-fzRo=j?_?�s>�ҨI_f���ۇu_���M���"����AF��2Z��=��:Hfz����%L#�#{'a�#�C��09��񇶑�����-:N@��I$�a6���C���	��/�O�D�O��	kAT��E}�����|�-qr�NdQٳ&�D번���l?sJ-���h{ܒ��5h-��&������ɸȚ����w!wE)�N[-�	&�-�%���[sv�'�
-����B����չ�Dż�����tJC���k��@V�j-4�
-�	WB����W�<˚	�B�8IY)	4����s�H-�
-	�N8����4X"�˃����*����������-����;��W��$;�S
-������i1����S-���<>$�\>R��c�A���VT����������,���ιdNS�ƨ/�������(T�5P@�ҫ�A���n�#@�l�����E���>F-f3�WY��5B���bkuT�5�v���A2�%�rD_�!����>-�%���݋>:�q���XrB�^��f�Bc|+C��Hy��$?g�9�nLY����t�m2>��O��H�M��g��6�i�����	�G/�{�_����q�K%��-l<�q#vI��a���R�hQ�ș|�������F��v���Bc���c�D�ss�J���L9�гV���θ���+�f3���H���KU�}���e��9W���+3=�ڤ!:��C����7��D�L�P���R~2\���+d�.(�����h�d�]�v�]>d��v�IL纞߫��ά�<I�bM��@��*b-}��$�����="��Ѐ�����ƀ�
-|}ݬ�4��6��������k<Ei�dbO�9��D���f9�����;q�K�����B�:?j�֞E�*��c,��V�o�Ư��h*~x��d�]�������[��r��|�-
-�0��3�:"0�g֊g�&"�ڳƼ㼨���6���T(\������˝V��\����L	��.�����,d�,z����lR$Ű��d]�����v�xG�h�z(%'��yԐ
-{>��3���1��(�����AM	Z�v��p\O-^������,�8���G�����$F=�$:������M��$����t�=
-PW�w���<W�R�O�����=!�b���
-��U���8�!g��}������������<h��(%�^��̲�=D���䦜Ӌ��(}Ϋ�D���}�׎c�|o�2�ӹy�}w����%�%���=D��D=����6�;�6������G��N��5\�Q��������762J�߮�Q�T��m�H�8Ðnx���{
-ߨn�_�{%�����~Sl��0F��6�i��V������4%�(]S�9����(f~}�����endstream
+x��\[s5~�4ފ��b��6g�-���M%>vl����&��#���'P�T]ZR�����L��.>���߳�7�8��Y]~y��:t����_BovȤ�Ӈf0=�/�G��]�
+�(
+a����c���Լ����P���!����g&��G�`=W�;9��WRjJ��$���7�v�m0�Z
+��w����`�i�Lu�@�P�wt�Ֆ���4tii�焾�����Bp������ʖslցjçw��w�s���Yq�����s�����3���X�Nu�l�����K5�������Dǻ�5���Fχ�C�:7x�d��n��i,�p���9).}{�U,<�d<ތ���И/`I)Wqnb�W=F�x�	�����~S��˵o���Cp�)����M�� �i̴+���vE����r����
+rc�Qb��$b�I8n�Q�2���E����=�G���V���2������E�B�K�?X�������{�����>���ռ!��˹)��Dv�<H���dE2�&��ڠ�P�sG��mI.r�aP�脠@1��4.Fr�SC��Ű�<���&�h���s�K71���B���^Y��*-�|y����+�q=]=��&"??D�+�bM�S�&��$j���k�*KX�Pcb�'���x�\������W��\Kh��+~�d����+	���s�Z��S������������,�i��-%:�5��0+7��6�
+��<m��6�����R�����%s��Z���[����.�<�@�{[��%�
+ki:<42/~�y���j'U%������,:��o������D��V�ѓ�TJ��Ĝ�gb��JX��:�a�;Y�:��n�0��Նʂ�	"���՚[w��<�ZT�v�J��&�U{���!_�+�Ԗ��~�*?F��f�2쿄N���A��E�Pƴn+�[�.�+M��RUH,�0�ױ�R?Ҡ7�a{73���99xzA�+�Y/�8-�>��4@�A�Or�n�mܪ�N�
+{���E��0�Rs�(�`҅�e��?(-U�5|�����&�\Ʀ�/��U�0pHZ�gU|y㇠Vl^�~SCkf��e��i%���/�
+k����eg!+��	ơT?�+Z���r\��y��1g�f�W�޶=�g�]�7wd���O=A�m�j�cl�xD��'�f����X
+��*k�a��=m�џ�����a����[|:��񡢘�˵�.3;�b�L %�ӻ�q���^9tc�1+�F�r�j�Yy���z�G���	�XQN�m4�sq�k�MFh�6=S&���A�86��6a)��PMD26ӓE 
+�e�J��^�oS�����}ɵ]>���r�t3�/>����++��vk��P/���-�K"�ֽ,�>pz;p}e�		���U�M�����g4,k�=w�)�ɘ#�$�+��&�(�eT��1�A�1
+����~k������I��x�����N���mS�J"s9uޯ�������e9�o�(�d��3�G��H.鶮��IVK��
+������
+���B!�q�����!B
+q���e�v�P>�:ML��9��W��������FV6����+S���ɮ�/��V!�|#Z ӣ endobj
 40 0 obj
-4829
+4671
 endobj
 44 0 obj
 <</Length 45 0 R/Filter /FlateDecode>>
 stream
-x����������t�p']������%[v-ɫd�E����CG��#�g������';�����q���	����L�~�`�ի�	��r�$�v~�Yo�����.�	�?twxA�4��Ûk7�>h7],?E�r�
-�|S���E�w�6Ḭz�e ��^KC7��G����\�5��t�k��O��v�nw����ԸK��a��@@�h�����~f~Sv��).���A�R�H�������W��K7�q4H���8-�D90@��}��q&l���j�J"���M|��f0^p����������#-h�W�{�������R4^�����(�eF9N�ڋ�����-�d=h��
-������3������X%�0`n-��@��V�����"���J k��TY#l��G���4����q����X�A������Ά���:;������
-#ځU���D�g4|B�-�c]�@E���G�`���/Za���t�(�`�y"�B-#���`���GQ҈]?3���JtȠ1EC����
-[N:T-�}�0����tTg���-�h)�Ҡ�nżch*j`/a�N!"le�zn����pLM�q�)`x�2*,�$^ܽ9�E��ԝ
-�a�Z{����p��Xh���<p(�*��$&f��?c�s"�B$a �b`��`Yk,6�E��).�?�g������NwH���2�w^���Z,Q5�Mz<z���x/$�qMmBY�W����VaP�g�x�P�B�&�����P ��m�������T~߽>��4g�P)�1��|i�T�4��a�����QD
-{�jGSU�nCCg7`�g�ex���c��i�,��	K��5��dRt�\a0ݖ�p;�Z��5$��n����H!���c]�y�-Q}wY�p�m}�����[Jb�(�th�3�nj�G��g�Q��R���T�+���tA�Z	�j<��y�zV��1i�j�i���7�R�߫�f��y�R~D&�R��4U��O8�c<��b���p��������P�����3��g��{���=��z�m�J}F��̀@���Uh@$>(�_�-�Cɉ����Qr���8��i�e�������$g�=��F��0��A	&ƿzס�|��ס�����y�c.�f�Ki��i��W9� �J������H,(M���z���ƚ��Ꙡ�K�r�[���WPG�g$uT��RW�5�#�=
-X��̢�~�u�cb�Ja��1K�EI��s�}�ghm��WK���O���q������y��{=�Hp�4{Sc8����cS�n�+���V�}�����^-�����f��+�[EV�Kb�.��YS���I�,̹�|��Sz�
-m�+x��ms�
+��_qͧUǷ]���C�8o�7�����˒Ύ����ɒ��2C<Ab_��^���uzu4����O�^	��l^��v�԰
+}����Gq�X	�zg�
+��
+~zy���s"��[���g��3��e�b�%,�{�[�^������dn���10�	��yX������<a��}����:��}~�ze��<^+m��E�E:�������F�L�+܏�����󬀴")U݈�������Bj�
+@�=��pl�b���[/;|�6����6G��8ݼWB�e�������ub��و�$_#	<н�I��gE*P���0b�vv��Fd���Y�m�+��FU~$����M�������I�C;�'�o�u�q����+i����4c�]��d��"�c&�o3�n�:yxr��Y�=��A`{�d^i+��
+����#�Y&����\�jX+]h��<*��+n/	�+���ekR��d���R�E�H�m��j��E���lwLg7���.��i+�Kd��F�/���erߜbۜ�l��#�n���!G��/V3��JEk��Sg
+�w����`	`'�,3p%n�%�&��F�N� �|�H�A���%���N�C>3+%F�i���y�d��k`=C<1��Ԡ+ΫA����C�c[��.b+��)��
+<g;u�����L�������e^�}�Y+;��w��ZO�_��a�N�����Wo�_���&���3�H)�~��q�\*)��j��@��C�<?��1h'�i�SD$�����s��choU9������ݤ>��(��;e9�2"�D���E�����Ie��Q#Ow����e]��k��e������5����ar��/�CT׉��U��
+}�YXY�+����7QŁ���
+'����ol؋ʶ��f��yd��[�(;�π��)I�X�Z�A�V
+�%e�%���/+��qܬb�9K�w�"C_�ָkj�6�y�P�m&��Ӡ��q��m`P��f譯J^�쇡�+��%��_�,ߦ|C�A�[��0�r��
+�i��+�-z�;ߘi:��gӢ
+K����a`��e�V��_�DG��+A~i
+�d��r��_�Vym�!4bn���iM6_�i������E
+��2��:��5E���}P}_B�Тz(��B�1i���=á�t��d��uSN/Rv��ʵ+�Br��z$p�����:K�B�����}F��&��|s�3~���֨���&"��l��} endobj
 45 0 obj
-4201
+3984
 endobj
 49 0 obj
 <</Length 50 0 R/Filter /FlateDecode>>
 stream
-x��o\�~
-��d�)�������d˂eK�,���/C�]�/i��<��������/��_�:q��c$����b%�b~��~X��<wn}]0z���R
-����f�^���i2�����8Y���k�d���~q�T�Yz|^Dz}<�y��ԙP�Ͼ�����rQ
-��%��<������T�=��"(��=���
-��[߫���~$�������
-g&�����	�58v'j�{^����2��^��/LcT4�V
-���(Ǜ-g�������<�-�!
-&��"��dW��r�&� *��u�~tUf�3�j�-�W��i������ť3�(�\_�ӜA��*%�O,�5�`r*qڻ4Q�
-���[��pL�K,�w���2�E�CX�L+��.E�N��Ԡ,���B�h3�~D�š'���j2:�2C��/Qf�hy��pV����8������� v�v�L�A��b�������.�"�lgG��,�6,�����n�`%�Z�.�2D�m]��@���e�4�-�.)�ؚ
-��Od�!�`\G��)��L���(nש��4}�˴����X^�qs3o��(��M���������'t���j
-�Wb���L����~�#M��<^}G���
-�^,H��ɱ8�����}�9@����<8�&[+0z`��3yj�PI*08+��Г��^x1�]K0'�o��Jɼ�����=���v�I�Z�C\���h���>n����#�K{��d+G���@���u?q���F�-��΁������#�)��MD��ߖ0e��(9A�,���8R�F"�M��aW��1�7����>�3�t,��'��t����_�gz����w�Q q1ȣ������j���2͗;m}s�&����χ����BF�y@[v��E}�KK��|ӟ�(���T�4�3�n���;c���\y ��;8�$'�ύcǙ�P����B�x���@��:��l����U��$�'X�c�]�uڛl��n�O�����-��^-�� ?�N��WE�|B�iI~~n琜��o�7y�q�p n2�nRT���yTv5D����i����2X��	7�SC����k�W�؈��?j�udm%f�-�D����a������2v`m�Y@,�%~�Q�)�������G1Hf������6���?��7ȁIa������U,����w[@c%������R�)^���8rCX���{[�7���Ͷ��f=ޘ(Ì")�{���aJ*��x�*XR9��_cw���h����[p�T|e��f�����ι-2l�n��@��i]���(��wn��IxE룵ڸX���i/l'���J���z=i=�f$��&�K3Τo_U�UyS{��oW-V�.N�&���<�L�ڭU����x�*q%N�JC�冪��^�����{)�Y��R��
-������?��qNF<��?�bG:�*�T����-���n�Pk�����Nw	�p��a�ۻ��7��r�=b�<N<�-���`l�
-�aL:)�t�V�4�Q+����>�����	ى�'C
-v�G�€��7�Z-�Y����J�g/�-�G���{?�g������R3�ύ��M-�(�C]/}�M/����o<��q���w\�#�څ������q�-�����7�e��3d�k��/:$	Gs�t��M�(M�G��p���ݩ��c�$^UzoH����F��x!L��ZYs�~��Ǹ�M�u�������%��ò����A��D��I��\.u�@����-���O������������rj[����&a5�RaZM��?�O���+V7'��H�������-5�lNZ��+Fa%���Ym�EYe�b���V(b����4B��n���d+�Ok�O܌(�i���fs�kA4��3����d�%?���$�d�)>����Ô3�W�d7A������N6��	�����1�+-T�S~�]iN5��pN����B:'�N����G��M�4�*�_U-�I��"f�T
+|�8\W9�������a���p1�S�������������ցA�O~`{�SA`��eV����qM����O��f�
+�i��]�0X]Ut1��u�3��lI�tA��נۅ,8���"ʣD_��v"�p��	�4�v�.��5�n.������Tl���_:Um������+Z�m"_&�:����D@�����V��@�9��4r6y=��~��H8��4d~_%i�K��	o�s�q��%�����!:����^;�ZX�Bp�Bx$p@��@f�	1�r�<�^/dF]�j��Y�%C�s���,\<�is|�W��)�;�+o�b��j�
+/^SW���r9��+0i�����+�5GHk �ɯ��YQ���
+�P\s�w^�5�_9�l��'2﵄Q]��nS�u�pRr�B�^������ɋ{�����}�V$Ay؃�({ym)�]�$�r�]~���"����jܯ}ȗ�U��x���'���9H��G'��a�f(ޤ8W-�t���|��bCY���+��'i�ƾI����M5`������fǝ|��-�Ÿ\�W@���s�p՛���.�V�4��GqA�X�w+9�D�ơ��$c'�o��h�"q��=�&��sj�������;ʖ�+�{Yh��^�
+yrh��G%�{c�y�h�a`�u�I֥���o�E�L����Z�����LL����
+���vC������>֨������p��@Yf�<�QE%_�/�m����
+%K�1�� endobj
 50 0 obj
-3581
+2987
 endobj
 54 0 obj
 <</Length 55 0 R/Filter /FlateDecode>>
 stream
-x��o7��!?�{�j7�����3��l)�Krl˗,���d���-V��*���̿OO�V�썫o��_������<�J¬�a������X	�Wnt��'{Yl�a�Y?�x4�^o����f_r^�7��d���~�ۿ܌����A+�~�è�]�ݨAk7�w�IJ��lb�{��s=91���_�ױ���L��B�#����F=�Ҩѐ����=�4's�S��du8=��}�Q	2<]Ԝ/�ɨ<��?ؓ;6�G�����͋z�+�������|錫�����,��_��������yj#����p�T�Ua����6�b�6���y�Б��
-�mdfd\�
-�a��pt=h+��5Z2}�Bk�Tʎ٭�9u�"C��d�y����T5�k������9&�5 �TC6�@z'���f ᬪ��Z�áf��b �������cL�9��/�q����(�n2��XzVxy��ˬN����N�Z�B��%U-�Qew���7��C�f}v��/'Ap*���A/�aO7��A��΄q0���9��"s�u/k�:kǓH����܁K1L�+�r���S:��d�G1�NQ&-4 RLޟ7jK���9�y��k1�_<��AP��:��ȋ��/�g����eE��xT���.�s�
-]�΁���sݯK�|���]��N�"�zԈo�<�tK��i������*~`)p��zU
-_F� ��5�^������2bO�.��-���]d�0_v����c�M�R��ã�5��d����s��+B��4=�F��1-h�4lٮ�$�;�T�[J�-������Y���J��vgB�^�-�/�-�*�O��3��U�?:����tV��ǿU���4v�,m2�k6Y��������L�
-��W:>�:RjD��7��X���$���=��Ӽ0k �!���=3��i��=o�(������[9 �(����''CD�]�Ց����c��墯����D0�-�P�����t���
-�Ԡ���O����2����d*t�#��G��g��y�ȟg[S�3��������%8�n��d��%p�+.,�'cD���u������X?�F�����:z٠��n��k���rp�G�(�1B��2	�ǎ¯������-��C
-���qx�,�~���l���g������Ү�#�¯�Ql���f�xJE��Q!���d&8)�m@[���o��?����K�H@���:��$�`Ȁ�kx8@�Pa+� O����H��)}��'���(�Z����s�[:����24���3��&GV�i�n�����Y8�p���Bdq������(`2��ijX(��Q���0��#O:�S�O�U�-O:�i��iU��p�����Ѭ 	�#dJ��|��cݲK�G|�w�Q�&���(��\���Q����3�o2�4Z�ř蜟��X6�y�XKʬU�6I���LrB+�W����[b9���X�+"�����;ր����*�8)P|`bP�}�#�b�U�D�1��W,�Ch���2%�K������R��_ep2�np`s�)j��G�1d
-'��n�z�����Ǻ����\}դM�����^/���USY0��
-�=���r���#���=�HG^8e�����
-0��3'ҁ/Y�H��H�1q�'*�ת�rD�|&k�-iHl������`�YN��% �`iM|�8�����m
-��^<YGэ�q�"��4��[%(-��2�B�mZ'T�O�*XPFbj�/lHTvJ17ȱD)�Cq��bVs���ٙ��).}�����֛w
-�a���b�-T��Ѓ��S��Ut����2F+ϻέNaD)׹�*a���� �����^�����&v������,��7��{��vN
-N���6z�)'���X1�H�.�Kjw����� ;Xs�czte�њ���kra=W�
-������kؘჷ֞���Tb!��n�!:S���%%&�"��r�n�HӲ4Wc��0DÔ�����l�(r��������g�|�|ÎI�y��3;aCNi�bPyh�PJ.�������@���V�ὃ��9�x���R���{_��}��������{����|t~��W?,~O�&`��)�p�挋��#E��������d�CY�l���.D�NL��9��x %��<�ˣ��swKV͜�'�/�t�)J���K��#�`���MB���Q
-���E�}��`�ߌ��o�&�铢V_3��E;��kV_=Hn���A�t���n��_7$��_��M����ݾ������@��&���I�%�X�Sp��D�����6�f�6�&A���T������G�c�l�B�?��G�q�����������b�.�x�'Ўu1��̺���
-�͹�}=��ge?@;)B���<���۴X��]��9��r�]�@�Vg� �F�FQ��+4�d��k���6���js�Uz���$s����1n�%L�A�T�14�ؓ���P�A�$^��!���.T���)�������Al9qr%�N1�iQ�� ���W�s�@Bkoغ| �It���[�R�Dr��۩	+x������.q28�]y��%�%v*�"�#��w�:���40 ���RIUJ�b����e�b���O?���~�������gG�J5��mm#��,Ύ~���׮��I��!d�;��ݹ��N5}=S�ѭ��gs�Z��,�00{=�Te����Uk}��ƛ��o�3�\�+����������i ����/N�밇�c�U�w�|��	�io�����M䑠�D�8{��/��:�I���łl�AX��6�
+�׮�CF����%_��G4�����2
+��+��-N��\��+ϫ[<�(Icc}/:��l^
+�5m����yF��z�XkA��Ȱ(W/��j%�݄Y�*�P��H���yVh��^�qR7`�~����Ò��P����J��h�:0�9�#�+��y��d���Z9W`6|��;V04����of�N���`‹��|�KF��כHz���
+�ɀpaމ�qJgfw�y���������#����
+h#چ�����Ȧͥ�UO�.p���M/�I�X�mp�Yc�[���1�����^׫�M�3L��9��#�m�2Ya�[�e-fN5��|�x��PK��%j��V`���`d����r!���0����HLG�dRҁ�֩�+��r����V�C��̣��]�<bK�s�ܽfa�3;@B�[�bD�7�t��0l5괢�p��T�Hf�l��A����16����b��j�������
+����偈��^���i�CTy+�4���̋��
+����3�=8}�����c��q�Wi1c5�̽!+t���,���+�D��2+�A+���%�.e����+�#�nl�����Q
+��6@�,+���bR�L�0�v'1��0ޤZ�kw���-ׄb6l��= K>Tz$1`�Ӛ���
+�Z���H
+\̓4d��$�����[YO�OöF)�ܧ��Z�,;Y��yk�a�����w�<#������ssg5r���H"����IC�]�Yȣ;��s��H����������H���M�w��_���+H����M�ߓ*��a��A�K�Qu��U�Y��B�����JÏҐ.�ޚ��ܐ���q��av�KR���[�s�~�\n�t��\����d�z\�PfZ�c���h�M�`��b#�{�A�_n/
+�+�����[��E�����`���E�iv���=I���`����#>I�7R�DȿE�[I������!IB��ZEA���!l�d?4(���,*�;������`�Sv�Lj6yR�[���k��͎����4>O��U���+��oh*{�s*mё����G�|`J�"�����1@����z�׆֛���])8�IѱVE�9.K�/��d�g@�E�+��*�76���t���`lg��>Zd���P�����������љp��ꨌ
+��n�7��4��GY�ۡ�og���_��+�r��@�"���h��������1Q�ެ�L$*�,��ܹ�3�R��xC�j=�G�C&]�-����!����TY9����f�iC��歅�����+��Ć��	�58�۠�����71��C��\aDkvH��� endobj
 55 0 obj
-4876
+4063
 endobj
 59 0 obj
 <</Length 60 0 R/Filter /FlateDecode>>
 stream
-x��o�~
-��S�''q��i���ɶ`K�-[��}g�Kΐ�ɗ8�Q��g8��<~��B�$���=8��>ߓ����/�5�sp��q�D����i�Z)cD\��񓽟���)���/i�h�-}F��zN��zj�Ϛ=o�����z���\G�m�_
-�~����z��B��
-�΃Zi�y|5������`��[��>���WHQ����ź��j�GT˗�Ί�Zm�0p�M�B'epEc��֭�������P�`�˒0Z�`�
-��I(���R�Z
-,�]?�a�v�s��0Ѡ�(����uy"tD�O7��N�e�����<%�؁��<�2⤝I�T���Ό���ϐ
-x�^�����j+$�pB`��Ҙ(�&5�����*O����>�.�}3\��4"�gC�]]���ewi�,<`Z�x^R������:�8�e~y�����I%
-Qw��؋U{�ߦ�h��F�J�������H�-�X��I�3�����w;���['�0n=����0����y8(O����2Ρ���Sd`�$�;�HQœ�x�Q�Q�n�F�X0�@�!J��ۇ���	D,�-���=�����>��Y�-6�N.*&w�7L⺍���/����zIɃ����5N�V�gcnR�g�Mlͥ�����$����.�	�^s}�b�ljpM�Ӈ�i�1��L{�bm"c�$��y�I�w�CzB9Fz��\rOm#w�y\�����^�kn��0��� M� ���(���O���9��2��
-���pBL,H�u;�%�Fmk-�oķ�y�����X*}
-�d�
-�+Zԯ��f�)�4��#��T·�߾�������/��\I�"�����4ڈ�dIί�.�g1��݅��/h�m{���KW���q[�-t��G���`�`��"�u���i�^@��0�k��T�@Љ8Q���I-*��R�d�&����	��`�Y�k���g$4G�-4'2�7xM����F�w��l�O.&���� /�A�u5 �Ԓ��Vz��<D>���
-��?�r������&@�SCM_��Rb�0j0Vs$��K
-?�ndDt�oTbα�1�r*�������CAcp�=ns�4^+�\��i���̶z��ϸ7���3�iޭ{���?A
-%j ������i2�vt946��fF���X�@5�@���K��SF�\���fK�*7�Ɇg3�Ɍ��z[����{A���B	�&|��@�-��C�{��י'_}15�8�w�ᶮ�
-�Ev�-e7������1��X����q���\Qڝ�k������l�p�)�
-}��
-/T���6�-f-��6��˜�p}��쪉=�����?"C������e�O=��T`��:��uQ\d�X�I�.SPu����ɑuɎz��Gc�~U�U��%��bYN�o���������0c�#X쌹e�-�[t	[on��B��iv�m^m�:d�ˌr����:T�+��s\:Mܵ��в�}�QHS3_��|�1a4����Use
-�x�I�.i���<�^�&}>U[bk4c&��d���aǵ1���6��������ԵZ@�^�xd����x��2-��i;��є�ڜeR��%$-K7�i�K�W�����T�����P��"��w��(�����F��H�t��‹W�T�I�*(n��W�v&�?X����Q�#��9�1}�e���J�����������޻���%��u_�ݗ�����k>w��}�}IZ���!^rY��g���S�z��zuf�
-��g-��Gv����5�w�r�{o)=o������/v
-��	SF&�c�s�ۼԹ.J4�s3M�wx��������{7��}���_b飺�[�s�T��vss(�[�`bǧC��Z���=�L4׀X����s�����a�6�7+x��o��~���¢��|p���".
+�N��������E��"�����-���w_�����������o��XŔ�����J9'Z�5a~u>�����s�U��'�Ɓ��mZ����;U�,�Bk���Z.���m�	
+fΕ'�R��N��(w`vv���Q�f�(4�\�A`��QfaG�e"�,��I3�^D�˜,b{���K�P�ۄof�W��%^޷՚�g�9#����2�( �|��K
+qk��ĵ%ڨuv����/�uX���֫0J ��1�X+�p�7	�E����A�]�|�
+���M�n/#��垅N�e�N�O'��a���Q�D�nV!���V(�M۟%{���|X=&󘬈ߏ#���9�`�T�>��p:yx<y>���fPj����C��DĖ�/	���;`�_�� ������I�	7{H+X��ّ���o��^���a+��*P-����Zn�C��Wz��j
+���4�j�=�>�Z��n/+ȷhdEc��5��-o���wc���lR+a���=X�{&�W�,M|~LSC3��.��y]=�vym���Ht<χ|k��VϹ�+jy<�����YXׇغ��]�jdl���n�(��\D�v��T�	�sIz+�H�A�����v�乨������8T�����j��o���Nj�YȆ7ED[}q�[�Ϫ����|W�-��+]��"�� 7�(�e|��@
+.Xw��Y�R'KL� Y�C���JY8
+J�����|�bmԎb��y_CIN�/.c�0�M3����W	վW�°:ߏ�]V��z�ʍJٚ4���AӃL_�����f>�Q]�e�1��w]_�|��_��}�T��Q��\�Ԟc�Sl!�eݡ�S���~��K��9f�.A�Y��.��u����wO����Uļ��䲓ך�� ��6n��,T|)�b�3r0�N"���=u�7yJS�t�;p�	U#ue]V;=�*��A��W���5�|�ndstream
 endobj
 60 0 obj
-3536
+3297
 endobj
 64 0 obj
 <</Length 65 0 R/Filter /FlateDecode>>
 stream
-x����~����t�Y���';0֫���˿>U�$��l0A-�W7����������ƣ��Ƿ~�%b������2GaVZ}t�Z	���	?\�v��A�T
-����|g}<���b=NK#WO�XR���&�^����S>ՠ�ub�3�>��V/�RƋ�:�^�^ƚR�z�փV������k	m���k�A��C
-rT�Y��"�cè��'e����z1t�U^ş%�#�����8#��]G%V�*�`r!-�s���7L�x��f9H�Q���Q<[���OK�/�'?8C�|.y�-.HG�J�B�u�Uu\���iB-2���i�I�,�,���-�W����H�g� �@��_ae�C<��������+u�(���������-lE�S,�+v9��5ZZbj��ʭ>�C�ŸX
-\��‹I�x`�U�������*=w�z�~��,��B���(f����o���&X�^�=����鶩ߧ#-���ȖFn"������Y3UC	K�Y�����gU>�\�.�ߡuh)����i��H�}���߼�[���S����zHeP%�F[Qen�*�T�f�`�@��Z������=����U4d��S��h?�����|��1y�I�������@��Hx�Y2��]��U�K��/��b�z
-Ka�Ɛ���o�QU�D�`�0��&0Rh��Ç)f���Q�
-铈F��[W��$��i�E�B�y�(�t0���dȬ#`J���<ɡSQ�N�K�s�}Z�d�B����H�s��nk�ZK7	L�.�"GL�1��KrkN	�@�]�ƅ¸��@��g�wkp�uSfqo�B$;��r$����0�$�!�w���1���dN�=�k��TGE�kٳ֔��\@d�~��̠��{��bX:�ʒ����`�{��M�$����<�+��K9,�#j�*I+\5��3A3����Լ_��4�.���e�FF.�-
-�4���$4��8VT7�a-}0K��YQ������~�\R␙[�|�x*
-smɒ���G7XF�>�����?��/0H�ٹ�Y�']#��e�2@eev��UҖ���A?-�.����W`�`�liY��"�8K�N�&��*o#��~�5k���6��dmt�-J�X��E.����ڪC~�i���4�m�U��� �{S:D�g'��I�b6����py��}�SRR	E�^6��DZ涗����b��ҮMC��������|W��\�W+��V<w�%�s:'E����-��O�Sci���%S����7`�[��Aj�N��pD��Q����7x�D��4};��D�cMp�v��Qڪ?�Uo2������I&��O����_@L':�~�I��G��QߜAUց��*���s<r�LMH�����������P�g�ܷ�E�\n��g�s� a�����G��X�����\p�"����	���LW��(2�uo����KSb.�ظo�Y��|�o�� (�4���L�Q�r�M�1��|�HD>���X�>|2��q���U�XM%5
-B�̨�9E� !K,g'�S9-%h�@D��]��A__@!H�G�@飪�]��	���-�=	���
-(�����Ø܎���=���\����i6%9�(�Ә��\�"���a�V!%�G1(|�_l��ÅUIhi�Gm�tK�=^t*��G�x~��=�%����(;S���������t�X����]7ɅF^�̞�m�m�Hf	��߻��z9��hmX��Zs^MZٜoR��e�c*�d9Gz��9HJNA�����\�������ѕ��.�2���!�,Ū�{����%����x��w"h1&�V��vk�j[ow�ꗂ�;��+A�U��{���
-m6����Nʅ���>=�D�0@�}�����|b��J�5F}��ن�䝖@��Ժ�ڤ�:C�%|��s��sC�ɔT��U����xG��h���P�'���]0�X]���Zb���)�#�ʋD�Y��Z5�������iT�TV������ԵW�3�����@�h��3��aJ��������1�ɂ��CF{T>I��Dj_S�%�!s������׹���7S����ԈXTo�~]��I}�_�I�ϲ;8D��1���,�J1&<5GW�.����#�I�m��g)�L���tkw��	��h�����
-�X}iQ�Q�N��-�#�HXW�|��w[yo��Tw�>��y�}ZJ_����,b�lRb�1"��&�ßґR#�I��dD�������������t_���%�H$?4u��R��^����5l�E���/�:���N�U�޹��x��r����ހ]9��"����rI����I�)���F��h�٬���_���7�z��Y�11c�uJ��ۣ�!Z��t���/�~h���մ0��֍�/���R�����L4ws��f=_��B7�cn���y?y�+Íin��qq�io��6'�X+����wiH\���d�+o�p���
+��k��YW�����aX�4,F�~��wW/��-w��Γ܀	
+�P������&��J�k���fT`��T�d���L���J�o!k����9�c`��j눱P
+��[���g`����j�[�<u���[_�H=
+�j�>(Q����)0͎ڬa�u�V�J���d�( g�(S8R���(=�5�56c���:�Z���x�{����b�w���+�'�����v����7��k�p�#���z�\��U!y�G z@V�/"�Jf�3�O�\߄��&��SH�s^GkY � :o2���Tw�l�Kh���YO���V0Hbv����*h�{.;�#�L�� ����j�Рs�� �"����D8��
+��@�^�<��t���шdz���D�ƛ�(NY��rիyei ޿�L��N���+���4�
+�������Vt���0- �Z�E~@����Z��f��0G�%o�@2�����ln{��	�6����)�����T�&�p(r��B����ǍCzz<��D!����7C����THt��-�����L����8�'lke��\d|��3p��Ⓗ���#+�51�!12!B)�c �Z������G���S#��:pD���ʂ.륂up��(׋h�%P�M����4%ni�$ɾmmǼ�k�3?�ר��C�}��s�y܅��x2[Dx��c�2�l��y^
+�zu�
+�-��v/U����s��3�
+�����L��^w��LY����"I�lLJ'���y�ը���
+d�V�'��G�KQ������F��NRX�9�D9יS$�\���ZT�`.k�����?e%�1�9,��xv�,F���]�{�n��R"Iy6�QlIM��C�W�	8		{^^K��u�N0�yY����ee��b�����_������ҕgR����Wy��}Wpb����Wu.��Y��f<�SɁ��}�4&��E���&x׬�/�*+ᗙ.�ԴkK%ؗ)p$V�6�W#Ko^��+̪���_��o/�㯆a��TVI|U�]�%�4�I��Gɯ����*��)�����#��W����$U#��L���������hņ�~����F��
+W🛲�_��(�(�x^�׺ܭ�W�o�@�	�����+�3h����t��U��zW�I?��:-���(�1L7Y��1KJT�
+|��O��D֐#��x�|P�=�ڴ�u1䃸�'�s��'���C�����h��y%��4ۍH�{�y���
+�R��P��u]�O�2�����{Is�E�R�5�m �H���C3�����
+A��T�u4�zڪ}R@m��������N./񸝦�N��M�+�����5ӕ4DW�;�q<?����:�
+�F�+��ԅ�j���;�5��g�Ϥ����e�Z����&F�N�Ʃk�³���^qw��M���z����������G�=����~���k.��\�3�!�k���u�+At��F��#��M#i*"z��u�+�����������)�"��\V^�Um��=f_�Mn��qPn��zm��+D�e�A�h⃇�ՙ{��<z�C endobj
 65 0 obj
-4704
+4047
 endobj
 69 0 obj
 <</Length 70 0 R/Filter /FlateDecode>>
 stream
-x��o]�~���:�-n�SZIaȺ�$ؖl����!������Cr��~C޼[I�V���\�;ru�;���҄U���0I�Uqғ]��W��rVLa�>��q7��z�+�Ggw������,Q5QZ��_v��Z��-��w�;�Ң�
-����Gβ�[4[�a>��WC#���rA���A��Ϊ>�#����(��J+ ʬ.��
-�8h�>��H�]	��!��ڥ�TBk+'L%6��1�-��P?��X�{�:��:x,��K"O���>*��8Ƽ���^'�m��HW�З��h��4�^kU"LU:o��S�v�	L���ɶ�F��H$}V��X��	��h�I36�7�G4K@?���4�Y��
-6��&�f�yJn�9����I/���4V�m�x��=x
-����R�#��-Z���Mf�mZ0oc��xm͔�@ۍ�i���WEk�������V���ϧsb��_i]~�\�
-�9�>�b+K����%����3[����U-	�pJu�����(%�`6�;�����c��kS�H9�	 ?,����:��������10����C����tʵ&����sȌ}?_��tK���\H�	J,��%������~kE��������M������u����`�8,K��:�֕�]2^�-k1=�1/�j��o�O?
-fD����H���s�0$��a�}�P��+276u4
-Ѓ�O5}��t��f6(����������&���d3W���OM���PQ��ХKٳ��y5���sܶ��_q�^� ���c;q;��r�$���;��^�������tFpQh]g���(��gI����l������W��s�UC,nω�=��FZ�x�eIk���ؘ��p9`k���eS��K�.�m6w")�JfK#��,e���^�
+H%;�wԴFLe��r�Ҍy[T�l*�\UM���U5m��w��'m����И���o�
+�m�˧3U�
+��=����n�9���&3A�W����@3:��V�M������E��fdF6nT����	/`��)�����`��c/���Ze�gvɪ$�/����V�3��g�h�sB�ZO��a���E7��e�f,�ć�8�� ����~u��_nm�q�l��‹����3��mic$Rz���o����2J��������=~6,�����(4Y�A�-i����E�ah1���I��	 |+8�h��X��Ee�����jt��N���U�A� %(��A�
+X\̦]|b,�J
+�;6h~2J�Z�Z�		��������~���v)�gU+(���Ҵ��n�X��
+��()�
+�o�R�	`��F"��n����eQb��X��̖�!�h��f���X6��
+J��ǖ6T���㿠�;c�ͪD3��є=.\�;��	������|?�"�n�xf�sS���ly�ݼ�] ���+r�)���++aI���U�[���q�dM{+ph�H,���w~��B�*ƶd��P�u�Q�����r�0�N���u�h�%A8nPU��-��o'ZP�Pg���)RJ�hq��^
+m.E�������4{�����?+|��n�}�����˂W�����h��*��K��f�����=a#���,�pؕ�`�;��>e�A��%^z��t�g�XI>e)�?��3>���i"��j�̾t`]�����)�)Ab����Kc��'�c֡�M�p:R���sE�m��7^��gw��	;k;�	�z^�F��_�j�#M�ڟ��=��\���������q,������V�rӆ���������f�$���2LX�,�m3���rz�7���u�C�2���hq�>�B�c�� ��T�`��h��+`r=�j�������)mxF1�F���l�:��W���w�����W?x�Qx�����c��b)���I�b�⠐y�24�s�?~��Qh�O���Yk����a^�����؇tM]�x���h�4g��[�T��GnlC���Y7�������p�'np���
+p�������;s%
+��3����~
+2zO����{�1��~O�
+qA����V^|=������N� �A�|��<ji�'�a����_���/\����h�
+_KŻ��^'n�-�9����y �A>]��_�'��b6!���e&�$w�}�w$�����5��p��Gb2�=s����?c%i���ZSM�"������rWih�?��~N��endstream
 endobj
 70 0 obj
-3109
+3092
 endobj
-76 0 obj
-<</Length 77 0 R/Filter /FlateDecode>>
+74 0 obj
+<</Length 75 0 R/Filter /FlateDecode>>
 stream
-x��Z[o����>��_�8m..��-ۊQK�e+��}������p���3��
-���~������.�O���&)3(+��u(�ՠ�q2m���Oc:��RQ;>>j,�!��1��ƗG#��%dJj��ǓIZx���B��㉶Qގ/��/�R��6a�V��6�;]�����’(�6a��u���v�+��DL�������R8otP���D��9�)bp��y���!˸!�䵷d�����?�����;�eO'
-�e�9��?�#lj�NNĘ�!I��S$*3���v¥�#�⠠xz��r�� l
-dN:^;2�z�k�i��&�}-��xx���7mfc�Zz��̚�����Z6
-�S���a� �!�o�O����+�V����no�oU{�z޳K(�Ofj��V�5j3K��Ne��p�gu"Eƀ���kPcS~��7�.��HZZq7��s����3��&����C+4"W^Rj)	R�����nWه
-�U8�~yr��ۖ�*x�J�����+�+sa�ߖ����d�#R�M���a�{"������}�3�E~� ��.2�̸߅k�ɐ����p[��h���9`�(h���O7�I�s�x^�6W�Qan�I�+J����;YG-��8�e�mWA��%Һ¢��k��s#OQP)��C��VW��B5jqڽO/;5�P�?[��,�7Զ|U��<����J����X?�~V��G���e#�Gj�H�2-p���	�vxzx7(���`F�IA�����>��A~M�{�����������(0��#��O
-���H䭐M���R����:���l(2U.*�� ��Ґ�ư�EJ���}�����i��g�Q��>�f��p��I�i6XĐ��ǮhL�������:R��*Sڍ��~����(,�(bIh/�&���a+�?���O6�GR+x��s$���S�-!Up	PL���޳���[���^�Օu�����[������/�}m������?N_~t��8d�uJ�ã���B�F�Cә�yx�F,+):��36��H�A�f�����7���RXCD��׸�s�$k��[�O���KZ�C��C�p-=�{�|~p�#X-��@�D������Y�{<��ia
+k5�y�@T��
+P$�M�.锕�\Dq��������_���Ȭz���Nq����y��''Dsq�ඕ�G����6��6�%7�' ��
+�4.(��9��6'����I�d���N$���Gi��΢��"�a͖��L�ʅ��
+b�f�@��A��x��.imf<� g���[Q��=�.j�靺��l�s>15Jm>��;ᢟ�|"AaKq���2�)�Yv���Ή�d������S[����� i���9���J���|3���N$��P&3�e�/�f+�MҦ�ݩ�]�����ZI�`��kUX}�fJG���R��o=V!*�d�W_�E�'�^���us����
+��Q��S"-��}(p2iO�>L��*�X��ZH�y,[�2��w���^���0��&�
+�������.9�R��f[r�Le?���5�X!�����u��0�"���oُׅӨ^�j��n@-����+������]%��+��I_�O��P���X��d�%�㎖,)A��XV̺���s܉=‹�+��CbՖѯ�<�q������~H�)����so��\�,@�N��!ԝB�o�������L\2��
+���v�lT�@�M ��Y��VM+N������_ɋϞW�@f�R�muvS
+(����t�g��5���&\㴙D�q��bO߆9>�����#�,O[y��7w�����vM�Z��δ���r���I�=��0�<ܼS��x��sf����㻊-����6z'��NI
+��6:.+
+P�Z���Sz�w��#����$�I�:�}h䘻����-&ɵ�6~'q4Y����@���zTREv��>�g)j�y�QM
+t��G;A�Ed���� �c�	���'f��:��	�~��H=��2�ґ������[��d*��$�+鹒�S�b�����^E���������X׭�(7/��D���q��R���)�J'��,��IXp����´���s�Wi�?� 2ث{5`�D+dg�������_%+x�5O�-P�o֟���N����TC&�7^�
+�ڋh�����j�j�h;-w�Vq�*�O��id��u����̒�ͩ�E���Bb�w)��bl�@���+��62-��}AD�z�_�>��� �����~�4@�ya�4�"`���E�y endobj
-77 0 obj
-2857
+75 0 obj
+3949
 endobj
-81 0 obj
-<</Length 82 0 R/Filter /FlateDecode>>
+79 0 obj
+<</Length 80 0 R/Filter /FlateDecode>>
 stream
-x��Ks���<{ ���[��8�e�!��iKv��V���������j���ZѠ���0��a������a�qw?<��rCR�����c��(2��FY���h|��r*&"7��'�i��c���Y㕍v�,�1��1�쓽U��)ggƯ�7C
-�8~��S��~U��/�npd�WF�}w�Kv�H<C3.��+*���;�R��-������\���}�$��fg��	.(���U��>��yT�T
-�������꿋�X+�13q��1�c��
-����F(�Dk�
-��0�Jfa��E�e`��;��_���.���1�D�d�b�JGm�����S���0Yh�zI5��1*��f��&sh��=���7g�!�/�U�������uE�:TIE̚�h�"���l`m8���
-�������0j��������Ŏ�cUx ��E�d��jT���h;�VI3���Մu�FeJ*�e�z&5 �В��T�%��b�J1b��:�"�������TIY�zEaM��6")�����UL±6�$]��-�s�X���#��<���m���k��'�}�7
-��^��F9:���ᓢ����S8<����$.p�i*�� �x�kN�b�X[��i���g����.�bHR�;�x^��sGk'�����n{hym��@
-�Z�6g<���@��g��5r���DgQ��waF��7JmB��%�YK�T����f����JH^��U|&�%1��3�Z%	���>���sYs�fB���r��ri¶��|Y������J4��[����Yh��"���r9�J3Z�EƉc4.��/�ge��y@���MKdl��8��z�����Ԟ�
->��~��a�P�N�uU��@�]
-� G�$-��D�2G�G�̭wJd���Ie��xj��ѳ��. �-$��:�Ðrğ���t������mt8ޫ���v�3=[y	J���	~Eb-A��^kP���F&��-Ŝ�yd*	��
-0�L�uv1A2�D��r@6FWB�z�'�P�h�{�a���:��Ujq$1Qwl�IA70�&
-�g\D6Bp��#�����=������;&q���7@��ݖ�"�7߭U��b��V���ڪr�]Ѧ����lIj��;|E�+���MR�8�Z�����|�n��Q�����U�����;�����\j:4IYU��H���g��J�[^���iOo����>��mw� #�%仍\+	���o�\ޙBn�c���M�$5�/P�������6��\@bE�}�1�)��%���8������Uϻ�������2S������GJ���M����'q�n8<��<|��Z#x���ݮO�z����<�endstream
+x��Ks������*�M�6���IK^K#Z;Ο�1�Ф(�}H���1����������^_�<ew'�O�������w�k�8{s�f&Do�Y��\��?u��{a�2��N[��K����t�������0�������o<)9��9-��i��� 9�FH���+I~�>�&W�W�ȁ�j�����K���X�m�6y���ɱ�ZEα"9|$��"G{�wY����	��i\�b�����*�פn?V
+5Z<��3�?�V7\0Dz��)�}��wF3�Xr����p���Ϸ�K���1��l�X
+ͻK���\pݍi�����Q��L��~&�
+K��	��׍��\5����
+ɞ����b-�h�S��4c˺*�{���r]�q�6�����׊��9��Jq��o�PZDi?f�/ ��,>�	�
+�����T/DZ
+�6����f�#3o_�tͲ0z�d^��'g��>P�
+d������T�qBKu)�K*oh�c�n�P��m�>����w���,I<��9��U�E򙷵뙕x)��4�R�A�Q�����C�M/���î8g8�\>(+QZz�����������+c���&1M��o1�V��L��-��p�r(iI
+������덝mM�Tđ/�-��܈�6����,f*�����Ӭ޴O�!��C
+��������
+J߈
+23�8��*��i\.j�����~�M�?���(��������&�s��� ��H�Ti)���#v!L8\-|�@��q�0��E���%�s\NF�
+� �2�?%��m��d8b�)��31�����a���iL�?��'��?�J����L6��[9 h�$هj��M~֔�6_&��] #���3��>4mD�� #a�7�Ԣ�B���C�iѢ�Gi�iG��ٮ1�Mt)b]����������RPI�G���c��PqA��"	�x���P2�xY,��AT�Qa��S��x�[����kT��aP�%����̾F�(Z]V�)M�H���J�_��������m�"��ƻU�F����P�0�:I�*�����B�����Y��Ho�vk9��7"�p	U�S�o]�pɪ^����n �����@=�A�ϊp��{�[����'j���:��Am�Y/˳�h�ֵ���ψ-��]����=>��7�������<��@�b����Mԇїd	��59�.thAM|{���h�W���1M�ڡZ�.���ȑՄH�>>�`���7��_�b��~��_)"7őTH�2�,��z��x:��u�B��I$���Md U��1;5e����T���"ˊp�S
+J�8]�F\�����罴�J�2���|6c���`&YJ���3
+�A�(��8z��2��+�W�Ԗ�ǣ&fr�7f,������+Vỷ&\L���*�i9>�ŒB�N�4���+�?�h���N�+Q�e�8cZ�2���<n�����Ŋ�j��s�CO�&�&
+�j������~KϜ���Tn9E���zV����f+�*�F�Qp�N�'��?a5d�ks	m�̾2"?*�A��7�/�������?]BI魕))����2 endobj
-82 0 obj
-2207
+80 0 obj
+3017
 endobj
-86 0 obj
-<</Length 87 0 R/Filter /FlateDecode>>
+84 0 obj
+<</Length 85 0 R/Filter /FlateDecode>>
 stream
-x��s7�~��=XVw�lp�6��Cb�
-C�-z-��/��ㇾ�z���{ս����ɚ�������E�o�	�z���wfx��=W�#�B����-
-OVG�NQ��4?|�:2ƨ�E
-AcV���Q��VIVy�
-Tڐ�#�Ӝ�nu�
-�v����Ⱥ�6���f����T�����#�M���U��E���uw�=ۿ�����<���@qN�O,)���с�:�����A����6Z��0������-��A9h<P$�р
-܌��>�D~���4��0���+5�B5�j���iU�?�i?����@Ri�k+,.5�
-S�)t��8����*�!��F`�;�w
-�arr����`�������#H�ޕH�#�O�ܠckL����4��Kv8K^��=m���Գ��Г����tǿ����<8�w����c�7�P�b�X�&(�==\�*��.6�o]��\<lQpi\�^��Z�Q��
-�[�Ӷ�w
-1�F-D#E�vZ��@S�uU)�]�u^�S�Er�B�b�N��D���W�`
-[`�#s
-ׂ܄�W��\ч���H���&Ykѵ�xɾJ$��A��O`Tv5�Nw�����-3U�� &DZ��@�����D�B�5nS%OkUK2�L �g���n�0�4�UE6�� ����H�0$���5�8�ߕh-i���%n�
-���vj'�mA�n�/�Xs*#�ͅ�1���b� m��0�-�-���Fq5}�Qf#y����7l���I��<�dnGY��ȷN��M�dUhV\@|_���÷��G}�ã8!ēM�m�E]�iČ�K�!Ur�o���bA>qH�%<F`F%�X� ������[�Mϙ�y����>j4�w+m�ۃF�4:�C����є rW�fS��G�WѺ(�����ۼ�V��q�<Q�iH���e1����X�t��t�M������eQ~{��T����:��B�GI�.?��,��3�r`US��Z��c-��Ë�5>��UMŵ�j��77��F����譐���7�j��9�?����A��(����"2m���ݙ��Ѱ�cV�Q�����K�����l1�ff�F�4^{Ȋ��2BGn��`o�i>�<���@n�@1�p(�������9
-endstream
+x��s�~��;�\y�-+Vʥ8�;��vG�J�r)3J1�c�cv����R*� ,�4��YגYg�����G_�R���7�����"bfZ#�䳓�G~6�.Z�Lu��~�<��n�v�]ךN7/拮��#B4�
+�›��Q%��8�Giz;����d�ґ���ٞF
+c�Ȅ�x��m'Ls2׬�'��K)i���`���߯wD��|3�y���߇ݴ%
+#;�
+��^���φ��yݔ	�T�hs�f���Q��|��6ց��q��e��	������1��;�b����FP6;Y���r��%�h��oe���q+�nD�j����@9��y>��P�h�ZL�J'��3����n@����_&;���r�Ҷ�u�i�B�b�x��4�����d�U~�Ȳ3���N~�������f�N�����K��k	������g`ބ(ʜ�
+��i%ax���R3<v{k�����d��lh�+�����\:
+�l�X�v�|����H�����/�fP����,
+m����QB=?����8�����U$x�O��ד�0�F�3���>8���q<�]s驁�D즇���2�ư�zN����b)K��dȺ�[Ű�z&%�1�`��<(��C��=ʟ�"ZDzV@C�����9>���Ɋ��>�f��������w&I���{�p�l� ���*q \@܂�l�U*1��$9�5r��8~Z\f`0f�mX�T�q"�{|�$�	���aU!7�P�̄�2j��V�6�34���8B���n�ܪg����) �g�NUW�ޥ�)2���w��tpW@s�ĥs����D���E�6�����V*�+�me��񩤦T�k2X�]Ä��b-q)NH��*=]��3���4�+aC�Z����ת2Qj�-��j	�e� 
+�����*
+�����!��ݾȌ�O������.b����§�U\4���4g8]�]+��,�O�+l'�� �eU�j7����Tu��|���K�����_�We �聫YPȼ1�������]T���H���c��?�Up{!�
+*Z��-���-צ�"xt]�St�������f[�pS��������~ib�~��vI$P����+앱���T���Wm�2�������ğ��j����ޗU
++<���V���#:%>X�����J��[p�W/_ej����!��=^U����\�#�9�k���Q�q+��L�@^����)^4�oY\kz.̰�B՘$��%�+f"E�7�d��p�_9��WIJ�ҍ4��B���]�ȝ���إMV�����DEa(ӌ���S�O��S�.�i�T�{�ENӪ�V?"KB������0�^���%v:q���R'/�P�T�۱���sw5��>����N�����s��/��� H[�#�h�+mF�X
+%��9
+RVuju�xYvRZP.C�����2	Tn�Hi���yl��+x�EUE��;�744+e��9������*c���׫�
+����y�My����*O��m��$
+·�8�����+7�c�N�4�0kXx٦�p�<�f��n<E)��8�/��̲�Vʀ�	,h�'9I ����:���CG���"��2��?'&����@'��_��zQ^&X���|��c���e	E{+r��K�V��x�,$:-F+<��_���MUx��|���x5������]�V<�x�waHh��sb�V[��!k�?��x3��������?��.P(,���웪
+�޿��H1���|[��<����L:�³������+�=��y=�� endobj
-87 0 obj
-1707
+85 0 obj
+3953
 endobj
-91 0 obj
-<</Length 92 0 R/Filter /FlateDecode>>
+89 0 obj
+<</Length 90 0 R/Filter /FlateDecode>>
 stream
-x��I�ܶιo��-�[��h;UI���*�\��pk5{�Tb���-ms:-����D���
-s��H������n�/��A��׫\��
-K4ua����0/��ZN�RR�"��5\~���V
-�iSz��Jt�Aw�U�Z{��8G/{�+�x�����A`YK���L����
-��ȸ��}LE���\'U$�R�N[��v8/u���D�l��s��ᚒ��J;p�2��Y��\�Cg"2X7o��¼����I�0�*SC2�J�F޻�K:�Qk&`sBPGkH�&d>�۶���,ok:4��訌���eN֥79s�Kb;����3�P�=e����@ �{JnP���i��[vl����4p�WU?��FTb(�D���������g��_�G� He�yU��ƥ�xU�V���
-��qyԲ��$�c"�2;�T�)�$�g Hv���+l?��ry7aܥ�=.3�pN�=�\;�7~t*7��7,�'�5H��B&�H�(��T��r�2�!��������-�/������B��u{
-k�bk��B�a�B0
-��̴����!�诸dB?Yo�������x���+z�҃>b�W^XΟ�����]]���R���A�8��#�Ԑ֤�y��T�ju&����Vś�
-c��6Z�͚�^ק9�튮J�0!ݠ��W%^Y�t3툕��xrE��c��
-$&��}��; 㬒&�-ծj}������c�Tؚ^-u�T�����������z�
-9���1�fH^e,� Nʦ�lsy���Za��|h�.���y�
-]lq��>#56�ʬ�+�8:��O��ѩ���#�NTu�y�u�J�=�ֳ�ڳNp��-���ZL�޽�D�m�-h>��
-�D`d,��>�]/���m��5����7����!�=}^����b\�M��-j����p���a>
-����?�ʙ�,�!yU���X8޺_�W�K�(�9�4�I�Gj��R���Byl%I,��[����c�Z�O���Б���p�w��>{����6m�I$��F�ub���luwL^�3H%xِ���U����)�.��I݅/3����7t��L)�޻zb���t7�T�ΐnQ����r�Z���/E)�.�nQ�� =�l����~�0������^2H)::�L�C�'��������3ƀHQؐ��ȹH�\}���l�ީܱ����� _@����!��h�OB"I��78���Z7<e�_]A��pY}a��.�8)vb���{Kר� '��>�Vf���_�p�4Fx;����n�*X_g8�sv4��w?dendstream
+x��m���~�b�)�.A�I���w��{k�������^foτ�P.ʲ���ק{���g��Ŀ�g��ٰ�8{q�����Z�p����[0%{����:�^X�L�ID�At:~��V��������L���|���Z��bq��%���i�����eZ����J���2�d��I�d~�u;��Խk2#�̮��=O˾�f�����<*v���&��.�q�9`x��~�0-���vzp�M�ؤݻ�w/n�h���S9n�V&ն�דc7�2�����6t�+�O���
+��kV�Dh+���+�w�����͠�*4Q�y���y��8�ʴd9����Y�]����q���MD�m�r?�>ng��#Q�N�ۨ��^�k<,/5�H�u�UZ���k�r0	]�vnJ�+��xܱ�|Q'	R>��u��p!�mmy,�{�G/ɫ%�p�vi�p�������?p��a�
+�?zogx�v	�)U~�������o��f����l��$���zT%��g��DqM��o��UݿRn�21�D���5Z��S��rI����;[�2�8⨕g���~,nof2�+�q$n�y�z�E�s����(U~[�C��6������M��H�S!mϜ�*��ܹNaٞ����'�,�r����9�9����Y3�MK���Kbֲ%���=P�~~b�w$.����-�c��˚V*M��|�WiI:��z��s"�u|����R�����8��_��� ����_6��|��wk�H����TT�����M�\�𻄶=c�*���C����Ŋ�Ƹ�*C+'��JыA{q�F���5x0,=�юR<
+�΄��>��R(����W�۟`��P"��$��������VC�p��gT���$�W+�߲���y0�i����e�[q��jn�O�jn���k|�H|��_7N
+�2�}˭]�i��G��!il�0x��v��+��Ԥ�FW������mz��i����^�T�4��c3@�g�2)�z<��k�/��C2��
+�ɠ_�(�߇뮸zgE>�g*Z�v��D� z���+m&0n�hK�=k4�m_���$�!��gPA���z7��L��l��+~��م����t�S���>~��;��57�?�����dD��9�6Ӊ�3Q���9�o�l�BH:~(3@'!bjw��T0��*��x�j���Y����A��%���R�KG1Yp�li9�Q���R����j!��!t{����13�R� ����pz�n���v�C=��z�*����=�[�����`Og���k讘��aU@��oK�7��f����d�z�F������X+�	k�4�y�D��ir&�Rc;}�D�iD��_V�^�w���2٧��>Ԡ��C����&�d���:�t]���j�%���ܚ��t��e���~+�C���D�
+AMk��1���
+�h=]N"���N��-��A��5z�6V2R!b���eP�i:���ɦ^(�D�3��Z33øD�{w���6�:�-@�����'{��KS0��P��f��]�B,e[�f��y�!��}���!����^\���ѥB�����ݶ��Rg�������w��8;��Mm�0����S�>z�i8�T1��g�y���P�@G&\�
+�r����ĺ'bW�灃ȧ&�40�7nX6�'��9s��+�4�+��k�xGp�~E�^
+����c�� endobj
-92 0 obj
-3403
+90 0 obj
+3444
 endobj
+94 0 obj
+<</Length 95 0 R/Filter /FlateDecode>>
+stream
+x��ZKs���[��w㕛����+����)���k����ٙP�R�j5_7�k�������=��7���0����n���\�������W/�a�&�~e�{O��������f1.���__���c��$9L✳n�����+�	���O�6����.
+����9|{���sp!E���!;6�r�%�WU���2�ސs���ʑ�д](����@f�RU���[	M���a�RU��v(�LK]��sB�y�{w��W��Ï���O:��Q(�z����[f7h�Ȱ���3�jΜi��1���L[,��"�?�b]�|��z\�e��[Y���H&�f�J�*c^!T��&�&�[�������L��,~�{[Y:�2er�cTV�:�����"5�3r�g�j��j���@���Y}�?�`�)a$�i(6�{l��'`���`2𖌐rU�%>ôFU�8��������7�����-L0_p����L8�)<��%���Wd��E�%��
+(ӱ�P<B؃3��_���w�&�n�$#C�$���/'0cuQ�CG��z��vK'������6KX���K�Ĭ=M�:�5�,
+C�@_�A4rj������ۅ.�W}�����
+ m+J��������K�E���*�@�>xb���h�tb������Q�
+�6(�MѝM3u=�Z�*�NJY��.�%��hL��ZO	�����H�liQ�\$k�ۺ����:��D,�H�\~*���!���#������{]�W��]�g�pe�M�vh+��Ӷa�i����i��p�v��ǘ%�NS����C@�i	�7k�V.J�\6Q���8%-�EL.�Ft����fd�>����>û��O�+����:;�W�+��t��$4BB/&�N&J�\8�c\�`ZU)FF�r�?�q.o�b<���
+�/�F�=S�l�`:������Ǿh�	3V��aÇ
+z�X�2ͩ��9dYb��%t�h֫�V�E��)&M(y�X@�`8:��b�~����3������a9ʋM
+�������]	*��*_+���L���kK���N�Ŕ"-��Nʷ�Z����3��ǎ2s� V(ZdJ��*��$�C��z�C����+��c]����W�f��.�J���+��a^��~��ޮ�W
+C����sBݯ��.ɪ�����S�� �h����`�R7��:����͜�
+\I-%
+C.+sH�btɬ�t^���9�>�}��7���|���n�<�҄y��	MGrbo�lO˛��������;��DO���)��pJ�)K�p+��6��bq�S�K_^ڎ[�p:�����V;|{��ream
+endobj
+95 0 obj
+2291
+endobj
+101 0 obj
+<</Length 102 0 R/Filter /FlateDecode>>
+stream
+x��K�E��=�-���|�<v��5vaE"��0v���o2���G)��r���9>���A%�1�sv9��H���q�H2�i��+c��ڜH�A��-M/��D�14�oN�6B5Q#���U1�����v���BП�I��ҡZd���*D���{3s�q�W
+��Gsu��iw�����ó�B�P.x�7a�m��f�H���R8F*WE~NoV���*4G����~�s=��7=y
+X+��I+Œ��i�yg�tkH5�ra,\("-l}��)���?s��즏��
+H��L+�%	�L�6�5�R�J�ȭi�(��|`B��A���e;!=��������{%3���0��=F)o�Wv�T��"�+ӳ��|��c��[�;U�<u���+P��ht����{+��3��ķd��/Ho[y�T����V�r`Sm�+�[����m� ���u� U�*��G��m���o[y�jT�R�}�ׄT�F.������<��ˏK+H9����ݕd�Mi����,�$0F�� qL�������p�9�rW���j �kn�J����Ӽ��Qc�3�����8��O���I��0>B��럧|�������{ь)���Q�WNܧ*S�����!f��SA5��� endstream
+endobj
+102 0 obj
+1686
+endobj
+106 0 obj
+<</Length 107 0 R/Filter /FlateDecode>>
+stream
+x��˒%����;W/FH��wclC0@7,��GL���O�JR֣��c��7�T��|�LI��O}�ޟ�����)�?^ܞ?�����o^���W>�ZYc�����z�_��+��3F��������!9;Gë�g�E1���J1��˽|��3�/ZK1��`i�\��_��������O������������?����]QR���V3��|�)�m�LHQ�|�e�VP�!��OX�{[g3���NחZ@H��=�`�Ma��ߕˑ̰��������*�"5���<	i;���$lQ�lm�i�C�i.��[h-v��i6?�����2��F3�����=���nmJ*�-JWF�uD�T6����7����e>�׾g"�X/�!f6-����T�1��Ah�9t+0�L[���6�����kM���w�.���|�MD�*�
+�0{}2��$h5�Ɛ�%�E�+�F�I��Ìr+����_z[���T&�kE1�ԙ^�1�t]S�4ho�0k�-NݚD^V"D��Lg
+�1�P�9w�t66Hވ���}H\dH�/Y6	�oc���)@t|��v��)��t5����׎��Ò8%���{je��"P��&~���P�/q�қv��=�37&�F<6r�2�Zy�P�����)W�F��R���e��~�C@��O5�r���F]��T���ͨ��,�C�X��M��i�Jc�zlbvT��\������_j�".B��r@�@��Z=���l���m�n�$�W"�~5��7iV�Q�#b3��Ys����������K%� _�ջ��h�������v*���sQ��1Q�"�]j�\(1FƟ�p��Se��9T�
+_�@�Y��c��R���iٲf�S
+g����=�`�eD��D`A ܮ)�	
+>S�{j�ɜjXQk�^oXE�yPO�ǃ��iO�\
+�2(�Q�Z��4��T
+�M5��X|������z9��c����F؁l7q���}��4/��Z��m��++�ﵷ�do66{���6A�pA>��T��P����4"����aո#�j۪F�^�\ ���5��9�θmMi^�����+K�������.�������m��e�;��:�U΃�YX�tm�E��-�ڊ�L㍢�ajX�	���K�H7�����4��K�q��_��]�N*�D���W��i�4�������[h�͗��`��j��ٻ��[7��aƜb
+���М�e�p]^݅��J]Dž��j��S�v�����6ͻ6�|���;D�*������n�'P.#���(�r�vc�ndobj
+107 0 obj
+3680
+endobj
+111 0 obj
+<</Length 112 0 R/Filter /FlateDecode>>
+stream
+x��Uێ1}����bBb;7	�V��x�x�v�]�mwi���I�rSUͩDZ���VR�~��=y��R���x,��4֚$������D鬫�r��-�iZ���ś]é,����F�6*���EG2�7ɬ�7F�v�bj
+112 0 obj
+782
+endobj
 4 0 obj
 <</Type/Page/MediaBox [0 0 595 842]
 /Rotate 0/Parent 3 0 R
-/Resources<</ProcSet[/PDF /ImageB /Text]
+/Resources<</ProcSet[/PDF /Text]
 /ExtGState 22 0 R
 /Font 23 0 R
 >>
@@ -545,26 +662,26 @@
 <</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
+/ExtGState 31 0 R
+/Font 32 0 R
 >>
 /Contents 25 0 R
 >>
 endobj
-31 0 obj
+33 0 obj
 <</Type/Page/MediaBox [0 0 595 842]
 /Rotate 0/Parent 3 0 R
-/Resources<</ProcSet[/PDF /ImageB /Text]
+/Resources<</ProcSet[/PDF /Text]
 /ExtGState 36 0 R
 /Font 37 0 R
 >>
-/Contents 32 0 R
+/Contents 34 0 R
 >>
 endobj
 38 0 obj
 <</Type/Page/MediaBox [0 0 595 842]
 /Rotate 0/Parent 3 0 R
-/Resources<</ProcSet[/PDF /ImageB /Text]
+/Resources<</ProcSet[/PDF /Text]
 /ExtGState 41 0 R
 /Font 42 0 R
 >>
@@ -574,7 +691,7 @@
 43 0 obj
 <</Type/Page/MediaBox [0 0 595 842]
 /Rotate 0/Parent 3 0 R
-/Resources<</ProcSet[/PDF /ImageB /Text]
+/Resources<</ProcSet[/PDF /Text]
 /ExtGState 46 0 R
 /Font 47 0 R
 >>
@@ -594,7 +711,7 @@
 53 0 obj
 <</Type/Page/MediaBox [0 0 595 842]
 /Rotate 0/Parent 3 0 R
-/Resources<</ProcSet[/PDF /ImageB /Text]
+/Resources<</ProcSet[/PDF /Text]
 /ExtGState 56 0 R
 /Font 57 0 R
 >>
@@ -625,57 +742,97 @@
 <</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
+/ExtGState 71 0 R
+/Font 72 0 R
 >>
 /Contents 69 0 R
 >>
 endobj
-75 0 obj
+73 0 obj
 <</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
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 76 0 R
+/Font 77 0 R
 >>
-/Contents 76 0 R
+/Contents 74 0 R
 >>
 endobj
-80 0 obj
+78 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
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 81 0 R
+/Font 82 0 R
 >>
-/Contents 81 0 R
+/Contents 79 0 R
 >>
 endobj
-85 0 obj
+83 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
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 86 0 R
+/Font 87 0 R
 >>
-/Contents 86 0 R
+/Contents 84 0 R
 >>
 endobj
-90 0 obj
+88 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
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 91 0 R
+/Font 92 0 R
 >>
-/Contents 91 0 R
+/Contents 89 0 R
 >>
 endobj
+93 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 94 0 R
+>>
+endobj
+100 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 103 0 R
+/Font 104 0 R
+>>
+/Contents 101 0 R
+>>
+endobj
+105 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 108 0 R
+/Font 109 0 R
+>>
+/Contents 106 0 R
+>>
+endobj
+110 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 113 0 R
+/Font 114 0 R
+>>
+/Contents 111 0 R
+>>
+endobj
 3 0 obj
 << /Type /Pages /Kids [
 4 0 R
 24 0 R
-31 0 R
+33 0 R
 38 0 R
 43 0 R
 48 0 R
@@ -683,11 +840,15 @@
 58 0 R
 63 0 R
 68 0 R
-75 0 R
-80 0 R
-85 0 R
-90 0 R
-] /Count 14
+73 0 R
+78 0 R
+83 0 R
+88 0 R
+93 0 R
+100 0 R
+105 0 R
+110 0 R
+] /Count 18
 >>
 endobj
 1 0 obj
@@ -702,306 +863,431 @@
 7 0 R>>
 endobj
 23 0 obj
-<</R15
+<</R21
+21 0 R/R19
+19 0 R/R17
+17 0 R/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>>
+9 0 R>>
 endobj
-29 0 obj
+31 0 obj
 <</R7
 7 0 R>>
 endobj
-30 0 obj
-<</R15
+32 0 obj
+<</R30
+30 0 R/R28
+28 0 R/R15
 15 0 R/R13
-13 0 R/R28
-28 0 R>>
+13 0 R>>
 endobj
 36 0 obj
 <</R7
 7 0 R>>
 endobj
 37 0 obj
-<</R15
+<</R30
+30 0 R/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>>
+13 0 R>>
 endobj
 41 0 obj
 <</R7
 7 0 R>>
 endobj
 42 0 obj
-<</R15
-15 0 R/R28
-28 0 R>>
+<</R30
+30 0 R/R15
+15 0 R>>
 endobj
 46 0 obj
 <</R7
 7 0 R>>
 endobj
 47 0 obj
-<</R15
+<</R30
+30 0 R/R15
 15 0 R/R13
-13 0 R/R35
-35 0 R/R28
-28 0 R>>
+13 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>>
+<</R30
+30 0 R/R15
+15 0 R>>
 endobj
 56 0 obj
 <</R7
 7 0 R>>
 endobj
 57 0 obj
-<</R15
-15 0 R/R28
-28 0 R>>
+<</R30
+30 0 R/R28
+28 0 R/R15
+15 0 R/R13
+13 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>>
+<</R30
+30 0 R/R15
+15 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>>
+<</R30
+30 0 R/R28
+28 0 R/R15
+15 0 R/R13
+13 0 R>>
 endobj
-73 0 obj
+71 0 obj
 <</R7
 7 0 R>>
 endobj
-74 0 obj
-<</R15
+72 0 obj
+<</R30
+30 0 R/R15
+15 0 R>>
+endobj
+76 0 obj
+<</R7
+7 0 R>>
+endobj
+77 0 obj
+<</R30
+30 0 R/R28
+28 0 R/R15
 15 0 R/R13
-13 0 R/R72
-72 0 R/R28
-28 0 R>>
+13 0 R>>
 endobj
-78 0 obj
+81 0 obj
 <</R7
 7 0 R>>
 endobj
-79 0 obj
-<</R15
+82 0 obj
+<</R30
+30 0 R/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>>
+13 0 R>>
 endobj
-83 0 obj
+86 0 obj
 <</R7
 7 0 R>>
 endobj
-84 0 obj
-<</R15
-15 0 R/R72
-72 0 R>>
+87 0 obj
+<</R30
+30 0 R/R15
+15 0 R>>
 endobj
-88 0 obj
+91 0 obj
 <</R7
 7 0 R>>
 endobj
-89 0 obj
-<</R15
-15 0 R/R72
-72 0 R>>
+92 0 obj
+<</R30
+30 0 R/R15
+15 0 R/R13
+13 0 R>>
 endobj
-93 0 obj
+98 0 obj
 <</R7
 7 0 R>>
 endobj
-94 0 obj
-<</R15
-15 0 R/R72
-72 0 R>>
+99 0 obj
+<</R97
+97 0 R/R15
+15 0 R>>
 endobj
-95 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 96 0 R>>stream
-x��Yt׶Y�f T��m #ZB'��5���mY��;����)5�xB�-Yv��_f�8���$�J����:����������&0�u��1ӛ#���Nv� ���J��� ������65c��� 1[�`��|�GK�,�=Lew�������K�<%J���8p�k�̚�x��]uz�����g@�Cu3�sf:\�La�-֑>�r(�E�����W@:DAl�9#�%LulITLtR�k�ߑ�UrdWc���h�-�:��d'm@V������6j����d���r8(C+���p>�-��ɕ�4�����`jJ,
-0�����^�A�-�>���S���J���:�C^S[m(����1��BX�z�U�Z�Ps!�'�~4
-͸�<���ouʙ]4��-�����j'�o�
-ݠ��ɓ�Vl��Ų�)�K����UP���?��`	rxp��]��|��-@E�5�7��D��D�|1?���d0����9�fS%�Vތ��A	��"5�;$f�ܣےR�!I�w�a�҇Wɫ�h��X4`���<�Q���؅u7cء�p��NT�9��`t�{�;���hW���X�7E���KrT~������F#�����G�x�XDK7��W;�����~7
-I.�_%CFk�������NA+4�4��Fh�v͏'��c�8�":q箘�����;�Q/P)H�� X���#W$)2<�Z	x���*���j>Qئ��?�yI8��UDҤ�Bb�W�IŘ��y-2�����1�M)�cIZ����AS��Pi5�����'�u
-����S�͎�M���섧�{��z����rP�R������6�D�2]"���)�Qf��F�C[D���䶝��sS�
-������5L�h-��mΟ���E���n�2铋����p�u���j�����YTh6�~R.f�֤�O�ׁ?�A4���Ru�E�Z����9���f����k�ϕ�5���ٽM|*�]�u�h�8�oKL�5ou��P�0Scd���/�䯲ǟ��}&���y�wf�������u&��x(
-�q�ёI��a.��>�k�o�
-��N��3�z'�B����I̸b$_�1�s��$�`�Jbj�-�;
-M���젛�h��������Nx����y.F1��/D}���K	i�Fl���d��*eQ�%�%h
-���M��aO��%���xA�Cw�1<����U���y�nJ�X*+A�}	�1U�Pm�����Hi~e^\|q�zͻ�	���<[��$C8j�*�*���s��=��^GV4��'�žh�*lk��C�����"�v*<���W�
-*j�FF�iwF���B���ö���ʁy|���
-YӞ��A���+���&��W�&�Ǹ)<=8�}40/~��C��3.-ѐ/=A�����\�����V�U���@%�Ħ��Ɔ�&�5�赛����v�o��-��eHs��6�g��CYݠ�c�j]	�	�M��Py����kR����93�
-5��I��8���?S�-/�Е�����d�9�����6V��V���t�6%���)����P/���ĩ��R�*�ZO�H�g��КhY}x����"d%�-e��7�3�)�Ѡ$���_��l�T����#��h��}�m��4E�,*��
-L��y������I����9����h�KJ�
-���k),�V�V����Qz�6�I#H]�[ ��/�liX_N��ؖ�0�I�~?�^�������b�O�dd~L,��f�:�`:�~���vl��)����۲��'������"��O���%�[{�{�Ғ�FP���~��V���P[���B��<d����
-����+�W.p�"����K������l��XDl���\|�� ziz��	]%1���l/Sf�Ȥ?d�chPtXx�)�[e����{�:��������n�wMx�k�U�"��8���mp�g��g�#L��<�|9��>�I۝V���y�����7pkN�.h�4y��z��.Ffku�������)�Ȍ�c���m�_��#i?|`������$��c���c�ka��4�t��D����G�V��.�?C��C_usT�ex=&�q'�T�<��vA�ѱ��P�n��+���eڊ��EP��BC�7�=u�9ig��ʐ���������S@P7ˈ�EMU(�!bB��Ib�k�V܀�Q�<�Q	r�bH�C�+HҪ��sh%��_I-)*�'�TN��%��_�����r���ty���U���s�n�T���d�ӳU�d�)7�r>Q�Ew�����'��M/4D͚�R)�kT�($�s�n�2"�u�'�Q�F`d���K/�B��붵$xt
-o��(F��g�2���9�Mg��P���
-{(��	b�S�P�����T��-��ݰO�O�>�>�m��+c���:#���N������ݦ�f�z;��n�F���5��jE���b��n�b	���
-5�FoOts�������=��n-����ƅ��l�����]&����!�$���XaKMSy�-�4B{_��&u$C�%�P��������@�����%l�	��UA ���&�x��~@M��\��T�CD��-�H��S�k|`�m�����4A��fx��c<W��zM�B�<�����f�%[����Y�!����]�ްM+�i<�_�Sޓe��l���V��ܘw�D��xh_{9��f�#���n�a�4+��f��ױU��E�u�h�'-�ݓ�cc8DA�J�V�;�^�(����,&8�-�},L-}���3U�P
-��"��~?�EK�cN��_j��*�p��v�z�&+
-R a�B����h�+��Rr� �؛�u
-{aoװ�v��~S����-Z��޻�����]�V�:�+ZtI���H [NJW��c?�a,���}��Y6��f�I�G�UÝ�gK�� ,)a�ZM��
-�Fʮ�ܼ���^/�SR���'�}�3��N���'�Cw���/��Wu��'�����BИ������ӓ���S��Ѧ{����-�U�H���m�*�-*e K�f:���ݽ��-�'���O?��=�!INs۵3-uq?^*y���&}��'�;���T5hT\�'�O���<{��)�<-�#�8�G�ůc��bw)�F�!�f��Q���M��Ϝ�{:U�������ۄ��!�fD�GU�m������B��ӗIjnM99�sL�uf�����/6�a��p7Y�M�&R���4
-��ry6�r$����ƃ����=�L7�`/�f�Lt��>>���וT4�{lQ��?ԢY,*�*!���tLj���SZ�J�����Zm|�s�
-�z�$H������m{�f{���6���'�mP4������ڦ�R��/ؖ�իIN�]�� Ç�-����1�ږW��͌��"="�}÷�B��=P�7�VUV�$�i�o�T�������'���
-�U���`�~���/�e�~MG+���/p
-��*ٝ����x-�x����8�����9'2*����G_��#QP�v�h��ݶ[�J�s�]�zaサ�����h����sms��#���8����n���	y+���jcۃ�q�Y�|t��(izt��!�d���]ai�4|ۚxgݞ0�]�9�8:!8������d�'���su��<`���km;]�~��
-��5�������8
-�]3V�f�S^�^������lv�a��^������j�2�*�w(�� mп�ٔ�^;㸨F�`�s�s�_�r���dOﵜ�lL��)��	e��te�D���#m&{g$�����΅4��ff6b����e�����F
-mDM�*�t`�������/��������z�r{�՛���
+103 0 obj
+<</R7
+7 0 R>>
+endobj
+104 0 obj
+<</R97
+97 0 R/R15
+15 0 R>>
+endobj
+108 0 obj
+<</R7
+7 0 R>>
+endobj
+109 0 obj
+<</R97
+97 0 R/R15
+15 0 R>>
+endobj
+113 0 obj
+<</R7
+7 0 R>>
+endobj
+114 0 obj
+<</R30
+30 0 R/R28
+28 0 R/R15
+15 0 R/R13
+13 0 R>>
+endobj
+115 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 116 0 R>>stream
+x��N�a}��7��-)�H/S)�B]�F������Uj[�7���VJ�J)(*��E_�[O�f���s8?�RSƘ���l�9˹)����S+@���h��ɉ��Ιˊ,��$e��3�i�ΎA����j��z��B������;^py�o endstream
 endobj
-96 0 obj
-7430
+116 0 obj
+614
 endobj
-97 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 98 0 R>>stream
-x��W	TW֮����b��w�&��c�E��� "��[��U��QI�hF�f1&:I4ѣ&��&:z�<f2� f<ɜ�u8�����e���e9W�_��/
-g�W��
- �_�����l���:�h��q�n+�]CwŅ�r����۴!��~�H�t[�_d��AA�k�8������+*��=�/<�a��w��#2 ꝥс1A����Om��p�5{ÌbV1f��qc3�f	�Y�c��3��Ƌqg0��
-�ƕ��1��!����e�1�
-3��@�X3)����o���8�U����u��J�f���f�e���<4B|u:�E�����߅C�u�8+�hT͆p��O
-'s䶔  Oڔ$Ie׭�dcbQ�,nAV!��>�W��z�R�����|�37
-Wg�Ϸp���&b�H�l�I9��ҰV�b�QH;��P�
-i	z}J���k���'��f<����:''9�mK��!\�ⶈ��0
-���ݯV��2�+&���Ԁ���.3G��dؽ)8]n?�"1��
-��S����U�){��y�o��[���_Jb��ؾ%��8����7�\��-�˄���PA[.��֔buce}�^CN�>�<����':.Z���QP��9@��!"��-�8���n/���[!+WcL9
-UP�[QR��a&\>y.߾
-n�7���|�;VS,��=z�P(�]���1�4@�'T�11S�vNjFVNh�:�"���pPTS��!˔��������3D{��|*fV�����H5�Ȩ0��Z<Pub������S�-^^��:�-*
-������O�~������~eͽ��p^5��@�dzjUz'o'�~����g��]���U�7vV�j��ό#�B�&_��-��&��,\�.�CxB�쩴>gwvf�N�&�8���.�W
-p�U�V����޸���� I��a'��Y-�2/(˭}��`�&�6-Ln-�X�`�{�7��������l�*�'O�D�U�-��0
-�ɽP���<y�*q���G�mAB�ؓo�����]
-�H״ߤG�Izhb۩�s9~.���$
-H�I@R0Ss1�v
-�QS�?�0>�K���~n������}́�@R���cbv�E-���&]O0��$L�o����	�>ڐ�kq ���@�5�w>�-qry�|���&�Q`��
-_ߝA>>��c}·�O�J��cn�V����l�ڥڶ_K��-�u�rm��E1�+117 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 118 0 R>>stream
+x��YXT׶>���b��z��[�ƞ�b��@���e�3{�zS�+�AM2�MQ�&11暻N���3������enF�D"�+'W�3��	���3q���Gd)F��ި�F���9��D��[�'V�1~�����}��ޞ!�#� h�K���OD�˂������{Eh���>���֬]�<.tזu+��{����F���):�sL���w�L{c��x��eK�7��=���+��ZI͠ޢ�Q�U�=���ZMͤ&P���j"�Dͦ&Q��5��Lm�����j
+5��B�Qk����z����VP�A�j5�2��Qbj85�Im��FYQeM�S<5�b�є
+eK�c���j����2'[hE.�kf���+���7?i1բ�F�$K�h�<xpې�CZN��aC��xxˈq#bF�9~d�mUi����`�GKF�����kjs�G���%�=v��c,��9>v��q���o_r�8���aB
+�+2�D:H׉a�p��QKkJ�:>ףr��W��,�Em|�D�4�~(:�[��}�C��:�?(S���h���"P�"9==%2�+��{AWՑ-��/_�׾e���CU��f��"Qb���i�%��+��r�f[��Z8��:A����������ӂ�F�\�V=��}�V��R��ta�4�W��D��BT��I�y�|~l�s�>�몵z�W����b��7������Pw{G0�.#�J�<`m}�����.I߼F��>���+����DlSJ�OQD�q�ۗ!f��ߟj	�����ZV��:Me�;^����-�+���s��7�~�I���H	)]h/�)��1�Fi�k�tۈ��K8#�����)��Vs�fn�{����ea����2��<�4X\鹧�ݾ�w�,��(�[��oݵa.�
+gQ��&�9����b8�+�bP��Qs
+�-�qgT�2��N�#5*g.I�Q
+���h��𼨃z��/�f��$��q��ُ?��=�����~��3��.�p����>���d���E=qg��ݚ����M[w6xU�ES�ak<�߻�467�R�`���q�ΘJbȉ74Ƹz��Tǿ��eg��Ʈ��ѷ�A��a2�l��%��XCl�-��[lҾ��=���Lj��amoV�_��ٵ�����Y��7T��Y+jE�t�#�+P}plFJZ���Di@����1����}��B|���9�����\v|b���ZxW��!�衻��t�K�N]�}�G�8<���b@���~c�{l�?o�'T{����C(7��Ҋ.܂�a1���j��h<d��{���fŤ�����h����7�6i�̀����X8Մ��S�|�'X[�G8��H�I:�t=DP7�������l';�CNhe���و�T�`�ze��h�y�̝S��%�'YA���f�J�	
+w�wƳ�8��{58���S��n5����X�.s��+�w�/q
+Ibg��1��a&�4�����4]Y�����ɠz����'��]�/�+!k���F)���B�&�������[ze�~c��ӂ�w�o޹z*	��Z���;�쿞iY�5�U����ĺ"�����j��ۀ(6�I�Q�'m"�0]��)�c������QW4���,�W��߰63����2���e��e/\�W��/���Ko��3d���y���?�}����?ˏ����۷zZ�M���.�T���6m/b*kK�kcZ7%oU��ʥ���֘J��G�A~eҢ�e���{�F���vĞ���K,𬙅�Ut*JD��(%�%�)���`��Zz�[����(B��h�����i��0ϖW���|ji��UU����\چT�~�ٙ�IŨ���ҳPtS�����{O�^�Q?A=�)�ر���}�e�	��˕�h�ӲX�����+UG	�{N����~/���������W��E�iо-���NM�f��E?9�a��4���vTk���^e��D�F�+��n�ߏ��u�l#����|�bw\(:q���I�Y�Af`��iEu�W��U	��B'a�#��`L���0U��'5��Q�	�_�w�'�m<;��0��Z5��
+4�oj�>�,���T�����f�����!�_�2*�S:9��%�@����x
+�֐�4��5�c&{���UP�7Eք�FF���65�4q�T�����x'4�M�����
+�C��s���G�U�eU`?k�mmk��C���G=��$���_��j_�ӎNڝ��O�r"����mk�����}S�;���p�>�(���gBC�����+FF��2���]w4z1��AU�1-���k�ͲO
+\������
+.A�T�a�R0�6=���Fq���O�PRvB6iM�Q�Q�0L8+Ԍ�5*���Q�����
+zՀ7�������<��,����W�A���|�A��M+�D���"a�h�F��	4���%�Q�
+����õeq��Ib^�%w�4�ɐ�г��w�r	� 
+��G2jh+�bK
+JP5����9<bEv��L�����SWeE
+���cb���m�����m��Bq0�L��`����Y��l����Q�V�W&)T���e��S��R�О�8m�O�Ɋ��By\eۋ��Dp�O�t_~�*��OR�������=��{en�f�s*/�+�րJ��S�}(���t���PC�+Q�0S,,�:��������ѣ�v����9'�I�(������&T��8�������1�f;�}�AA�[�ַ��@�tI�&��T�*d�*�#���W"�j[��)(/��DE�u����h����R�ں���c_<A�-9c���U>:����b��Tu����R�Vt��D����e�䈉�I��!ߒt�t�������UQ����W�c=��Λ�AٮM��ϰ[�ڶ:�^���,}oV�zS_�|~�=8�O$&U�
+a�����\���a|^^A>R3u1jiDdB�IUk�7�_vh鿏���B�;]⃐��������V��}d$�P��/�П���21��z�������Ro5�v����4�����<��Ģ���ܼ��\c��K��~�E+׿��������Q�,ߵ�`#y����R���|ϖ�?<x����2�
+�N�SH��bw�%N�����������vuFk�k�*R(*Q�]�����thE�I�J����6cd(������˃�˵�������dO:�"V_l�����nz�-�ҹ�]����N}y�7g'��A����{x�|o����qֿ-�Z�a�O��z�����.p�/]�V;�,��.��[$���x����Z�U�����*��Xu�4:.8�j%�"j?�찕�7
+�'. N����g+������Dt�P�
+�e���$g\79/�?�N�8L0�����S�����לM�����%KC����6߰P���NnXr� endstream
 endobj
-98 0 obj
-3974
+118 0 obj
+6353
 endobj
-99 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 100 0 R>>stream
-x��VyTSW���yO[�-W��A�Y��$B
-�/�%�l�BXYTP�E��Rw������Z�7��΋b���s�'9�����1I�|_ׅ�!m���1rp$��`�C�N�P��"����y�%iI��R���]�/_�A�!r�"�܏x���4m��g�a�0I&�zv��8A�"&9�"� ���aRt�4v����\�fAl"�6��@�b‡�`��W�I��:1���H5񘔓7Ǭ�����L�Pר�ƞ�x܀S����;��~Î`�M3��B�C<�����6�:B�ba6����t	.���V�	ތHP���Bԫ(�`�f����+��C���~"�,�m��lF��[��=����s�{�p�wAh��Wҭ>���u79Z�-p8�մ|`Āob�x���V4�s1��-��aR�������&�<��e>{A�Y{ᗋr��q�[�[)
-ДU5v��1�-V�:mւ�}<�_��5�"LEy�
-U^��M\�-�A?�S�u�P�	%�ɬ2������x|�=�`�+Pñ�*pW�����&x�Қȳ��ǥ�^�},�ʀ�E����A&�Q��J�/4�bލڝ����sT�zy����KOAlnM��G4�K���"�Gܨ����	��%��f���	���K+�GY����jk�6����`�+%dɀ�`D����g�%p����:d���7"�[�'[�QZ7}b[A�K!O�a��v�'DoȄ��|0�'�]�>�<�x�E�����TJ�*�M�y�����),meU{HT�[}q�%lt��hÁ�"���L=_"�h^����a?PeP�g����r3�O��3��͠�+��|R��p�-�+�&��0���C�lkTk�ũ���Ҧ@��ٺ�Է�f�u�Z�-t�C�ʶ���s�w���[��-�*����;���Z��M�4��\�Nwi���U%B$BH��HP�>�
-{��45�_Ǔm��x櫧�_����C���WDF�JYq&dPiy2nq���������z��c�֌x�pX�N��=��O��h��g��u�u��V����dȨ����튆t��}'P=g��l�-{�3sߚ���(�
-E��� �@����}0�L4�LѪ
-r9�+뽰��5�Õk#Z8aG'y��*��XWZ^ij�j��D[��S���Wb����*�Ry�y�%���= �!�^�5%�R�I	u��<W���F:n�@������։v��}�|0�ؽm]�K��8i��}����#2s-g���)�g���l�$�C���mmVk�L,����p����V˖l=��kw�!�h2v�x&v�x3��W����P�[����&���A��|�b/L���mA��MEk��za��w
-rPgHEa��;�Z��������-�A>*�����$]�sx�ʕ*��C��]�-.�(ß��f`7�L̈́Ȯ�QΜ+119 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 120 0 R>>stream
+x�cd`ab`dddw�44+�M�|g|�_��L`����>�<< endstream
 endobj
-100 0 obj
-2809
+120 0 obj
+234
 endobj
-101 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 102 0 R>>stream
+121 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 122 0 R>>stream
+x��VTTu��s��roa��U 3�����fj)���`"�y|3������E��e��[[�����/�g{�{�Μ���?I$IŬ�%�������1AA�I�+%�h3�3_M�~��L��������)�R����͠�a2�S�\QU*���A��
+�>K������&�S���mQHk���x�u%ʤ�#�_��rB5��xI4i����b�����Sʙ/K�e�����b�X
+Or�tA7�Q(�O��t�������ߍ"����컀�Q| ?��1蠔��3�z����Gw�9}hrCC	+��F�"O��[|����GF��sY�Q��G�u����*�&��qy��-��t�x��y:��/��bbH+8���{��^g��~���U�6t���*{�H�Y�����ෛ~�>���"jwe^~~'��*F(�Q���PTę��&����L���F���c{��ULjv��P�ͶR`���@�g�Pָ�q�p6���;�|�y=4��yul����p���Ek�9Ky��Ժ��9H1�`Bl��3�K��ٸ�����������l�֋4��V)1/J^��h.b�']�}��������Cؚ�	��`D���-����e�u��G���<�/C�X���'��.N�
+�K��-k�-1s�/����c`!��8�Q��מ���bܛ�b������(���&��\�L.����+'��p�I
+"`Px�O�P�����vhp[못_!@��	?�$
+'��hu��{����C2��%�Z�,�����_X^������5#�a���s#5�������),0������h9��1x���� �������	Yj:d�g�J�����:4y��FP_�K�����P&��D�����5�ˮ�Xn7&B�k넰C��Aw㫡{w�qUZ�k�7��Xw;a����m"�"���?�Щ[�|�o�Ћ�]�O=^r��:�Y0�(jy���u�vu�ڸ����h���\m|\�0K��}~�m�M�S����qt򮢼p�-=�Fg�lI��M*W�Z|�����OX�.�ml]����$���x�����̅�QJz��Ӥ�һr��m]��N�"N��l�=_������M{'"%_|�������3��'gz�ښz�����S��e�\�]?gǓ��#M����r�����G�ܗt�+endstream
+endobj
+122 0 obj
+2344
+endobj
+123 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 124 0 R>>stream
+x�cd`ab`dddu�1T~H3��a��7s7˺��+���``fdt�/�,��Q��0��4Wp�-�N��H�,rr��K*�r�@:��R�S��S@����)��00201012��g\�����C�7m��}�����N�a_�����u*r	)l��›݇�6%��t�#�����g}ϟ�;q�r\,�8WO�7����+endstream
+endobj
+124 0 obj
+287
+endobj
+125 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 126 0 R>>stream
+x�cd`ab`dddu�1T~H3��a��7s7˺��+���``fdt�/�,��Q��0��4Wp�-�N��H�,rr��K*�r�@:��R�S��S@����)��00201012���glx����{�g��D�u��s��/�}h9ǟI�u��{��^�]�ca�Tv�����{ɬ��'Nc_��[���>�<<�f�+endstream
+endobj
+126 0 obj
+291
+endobj
+127 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 128 0 R>>stream
+x��yXT�����Ɩ؍�$1��AE�Hoҫt�aʚz/3Cw@@�F�F�c�����b��A����g��GD�"�d�uS������^X���3���aclxvJ�&��ђ�[���l�>vѸ�Ν=��b��G��Q�>�Q䏠�^���w
+�N�#r��>��^�|u��ODEQ�V9ąx�^����o��uK��;-�X�|G���
++c�=7�;n��ߜ2u��3G���g�{(j5��9R���(j+��z�z�z�M���PoSS�שu�j*�-��Qc��:5�r�VP3�q�j%5�Om�VQ��	�j5���MM�6S��9C���H
+�l()��L�ԫTeKSvTeO
+��������Y[���������8J��ߢ�
+̕�z7����R��S������N���dp��:�����2fH�<�u��=��mz���ɇ���Q>�G9�ҏ^�E������F^�3�а{�1��^���:�Q��wC�Y⧚���U�ur?YW������d�f~�A��Gv�b3��	�+(�Dv����KVBDAl�93��LMliTLtr�k���m'OVqdW���
+�:���`+mDV������6i����d��er8 C���8w�����͕�4��05'��Bpq]�/�D��bn�E��y5j|�-�m|(F���!�	/���1��~�Л���"
+i@}�*U�T����R|��}��f�?�wV���a;E]�����T$J�T%��GE�����B#R7	�
+�2�YK#�Xe%g���������뒤u���c���4�*�YWp��2�p+�����}��	>T�:���¿��2��4���ϴ��d?�hAV��7t�2�*�Ir������C��ҟWɫ�h�1�X4x���E���Po���؅u7c����W����{�;���hW���Xp,7E���C�q������2�G�~	9DK5����F���~7I��P-C�؃&�T����F��+�oS��6hѝ�?`4�MОhv-�'��c�զc�����2���4aku��cc��B��^�>H�ϲ7Vg ��������+/
+G����I��v	�	Ң�����au��Ʀj��$-�KJ�)����e�*���V���=���r�)��
+����gd���-�sf�H_�x��l4u����ь۹&��Zf�Č{#F��@z	���K�&�4�����۸�Fp�~'��]��较v
+9i����:�͓�����_��	i�N��M�+*cQ�%�$h:�����ͨqw�S�-���xA�}O�1ܧΒU��y�n*J�X*+A��v})�1ՒPm����Hi~iT��~�z+`]�p�%�%�Rּ�9�\���9�0��)
+�n
+O�
+�%K�3�'��?#턠"s�c|�;x1��_���֔tdS��n-�O��;�k3w��2��� )��}cɑc�����`��d~��T�&�����D̗䰨ϱ��@�a�+������z�db񛏀yZ��C�<U�F�Z���;���2�x��>F��)xĈy\�k���V�U���%�Ħ��%�������QB������T�x���C�;�@9{g�n&�e_	���#�$�
+7�+�>@	䇭�X��b6�w�U��	L2����ZmE�Ӂ��b����(0}�ޕR(h�e�W�
+����YeM
+��<��*d?���CJ2�R��|������'���YCx��楥�"d%8z1�
+e������Ѡ$���W��l�T����%��h�Y��4E����
+M����z)��ceO��U����������e�È��B;4m�G�X^m>m~*vs��6W��N���.�@ڑ�G���������^`���e���lp>>����
+{�2;��n�/k>����1ƀB��A��Z���ʌG�U���L���4_��t�;��v��(bO[����?B��x���O�M/�ݠ=��"��ɒ��V���a
+�3��몍
+=�q~S�Ԅ�C���r=�<ؼ��8���x����
+P���F��������=}Ĝc���+�GR.������~2�7/�2?�n�9M�&?
+T/���� ��^�̼��~���,�9���>6�ݖ)�{b����n�i?|`�8E��^�������nca��4�z��J�����V��.]8[��C_����xzLAO����x����?� ����(�5O���QPΕd�����3����o<z�pҮ���BB"#CB�"����MA�#rh5W��(�x�ɝs�$���fI#�+b!U�T�ǹv�jP��״B9��`��:귑�����'��2�l-	]��E���T�t٠����i��=���!��ʫuI�*4����t<���Fb���U���g��hw�8���N�P����9&4��t��^�G�{�����@& ��ȃ��L7����Uoت����&5��0��/4�}�ƲonvڠX
+���C
+����.9�z�6�$b7ï�ۊ���!��k���d���|������u4�4���.V���G�R�:#y
+γ������myD�f�:�!Ē�U�)
+�sbg��ȐQ(�^\o��6h��0����t���f���%S.|e_zd,*�"�@L+����I��S�k��i�����4A��fz�t+y��)�{U՘��:�h������A�,�ݨ�����yv���PR�g��\�+}�KW��>U��'s2��>��Օm���������Þ�<�^�(�&6R�����20}Ѫղ�P��I�f��덿8Dߟ���%���&�4	�=h!�	B�gr�z��K�t
+�	[�`1���Cl}��"����G	d���р���&Q�T*T����}7����ɖ
++2�����#Ȫ����%����Z�&ie�.2�B�e�_G���-��a��ѝ��s�V�vm�j�+���Oa��	/�)Q*�z��k�[�������H�<S��'OR����0#����</��83?_/�m��Zo��b�]f�/�Rp��ន�d̃�aA��s����\Ⱥ���ް�:�ix�8�{��r%���|'���(/��L��.��-��a��QG�
+tQ���P�:Y�+��e*(��>w�����*hJ)\E?�'����l�$#8�gbz�b��L������L�oNs:����45hT\�[N�s��ȅW2��{�ȁl{�	- X�����
+�QkZ5g6���23��U��8���iu�H�]��M;�)z�RL�}�f�$57��������9���}=5E�6��u�*B���T�C�&];i�\�e�����%!n�>��M��i3�D&�My��P���um���b�6��K���U�^�;��0����BK��[IֳRUB��Owm�Fկb���GV��B��l�Ռb�&	��W���m�
+�������UY���e�r\�iz5���d��:}v&WP���q��:o�H!����7|�F��'*L�ꪪ���'�y��|����L��c!\����Wܷ�v!;t���Q6���]��%z�kPU��tW^��x(fq�L���>��x�玲1z_aWA�\|Ijെ'�j3W�`����9̀���z(4��~4{0'��+����&h�ثIB����}���{?��3�y�����WTV��}���䟆���f�ZH�㟳y�VJpP)+�I+endstream
+endobj
+128 0 obj
+7646
+endobj
+129 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 130 0 R>>stream
+x��X	T�׶�CH�_D���p���Eq@,J��C��2��+�j$¶��v�~w4D�>G�H�}O�ɠ����D�|��A#|�Ƃ?D��ɔ߃��V~��ʦ�䭦�죁�r[H��2�*w�C�����:�H�,a(_P�_t����u&N��C�N�m������Ͳ�y�~9D@8xA$
+�Ȣg߄��t��m!����l.��]��K}�k]5
+�^X;��(���;����gЛ�+��,��=_~J򑻊�7}���Yd���6z��4�9�ut��vI�r��
+A8�/�b"ky2
+pЍ��ʺ#G�h�Q��4{^������{�������;v�L�x�N�6Vndѽ@fe=�pX),���J��+y�:�]U�1E���2�L#����rP?T|r�N���ԔYe���AIs&�8��1m�($Syw|[�/�+�8�83�6Ň�d��������$�y�Tu�����5���o41���|}�^�\��x��2�8?rũ8���6����V�Ј	|録��<\����+O���7�J6�����N�a�����A_�H�&A��5q]{EWg�e�+�����?�4�&�0��ۡ�+V�����w��W���1	���_�i���+��������Y�t�ze��S�.y���8)R3�I�����uvo<�`wu*e���#����}���IZn`�R�����\q��K�M�
+��.�<a������.1N�W����x���`eRBb��>�69:��^�����*S��	�Ǩ*L�(2V��p?�;Wn��}��?���%�3/@���CGֹY��/K�!��
+S���ehst�t
+� ���ؖec�9;�d�5�mZ]y?B�]c0&�%a�����F���N�qx:��4�U�/�Np܅Z�,�2)�iE�B^�����������
+&�g�fl������d���N)��1���I<}2
+6�o�(߶�34�|��ؑGq��6S�^A�ow��:��/-�M3(s6���h/e��#���+Oa;�����N�%�Y,���U1��ёR&���V�*����#*>-T��u0�������������͝��������\�T�P��k�5��h��X�(R�+���a���n��u��3�=�ʰ�R=�L�����H8R���;[�[�;�[:d)YIU�Cz��p�H=���qϡ�k~��M�k�����g��N����eU_��Ȓ��@�W���I�Y�)�������izD����S�;_�����ͷ�<��x�w4��Vy�~���b7m��z�B���xѳ�+�UB�_X�_tA�k�z�Gk+8Y�}<@$xC�xRY�.+7;W�W�Ud�LP��L�W�p�|��,����W�,ze���T��m0}H��,��M�x���e��&���������}��w!�枫Q�%{�����o��m�1gټ���ѐz�֠[D������h���01_[N�tl�j��'��8V��{�gp�`9�w����i���ۈs͒6
+__������������I�
+sq+�T^���.�+��m!J�n4��G>��b��D?K�M����>����դ��\��w ��w��.v=��?�B	~�@�����B�B���/T]���O%
+��L�2˳����,��u�NJO�烓�=g2A�q�����"����$S���K�`���?f�H��ϕ��[T��$��,IV$�^�a�g��$_��p�.v���7�}މ?~���'�~��U�Օ5�Ng˓�8�������<qr��~7���]t�2��&�C�Ժg�d}�1����=��~���U#��I�7��؃H�l��Z~z
+����L?������Ë���A'��	C�]�i�R4Yڅ�B��yG뷟V����������R�^{�Z��8r�'��{]o�-���0�ɤ�����#�Q�#�,��=����5����[����W�@3���W�����}�f������$��^�8y����-�
+K�+endstream
+endobj
+130 0 obj
+3980
+endobj
+131 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 132 0 R>>stream
+x��VyTSg�H�������֥�낀�n,��BB��$7�@+�¨p*��EP!�j"�
+���|)_�%�t�t������7:f٘Z�9|�E�g��uLsl���^�@=�JA��F#j%�w�����/*�t��"�l*��\�
+%�V���
+��U˴	��~E��r���B��9����{�Bj������ݽ2�-���K�[��z	?�������ʋt�9���@3��%5s$����P�v����gf�'�3��w=+�q���~�8������gRG,��H���X�~�E!����<�+��5 c$�M6[��]�@2[���_�NB;8���u��+�*��[�G啚��UFK�g&r��r>��m�j��B�O+|3>:�`����5��̊�Fh��jSm}�}__K�+ř�+IB
+�Q�S�g=Qo@�!��̄7�����~�@�>7)�f�#�k��zL���J�F���T_8�&�eu����{�E��T�\���Y�������`ڿٍ���2����Ĵ-
+)]9���X���Y�m*cϫz�$je�̪lo��6V	+*�䗮�˕��ƔK�5#ב��Gt���X���d)��N���6�o��G�k,�}?y$�c+l�����a���^|`eϲ+��#<��}8���B-jD������3�wx�tZa�_	Ka5��ej�Nyl�����;o�)��G�E5ap8�|��E��n���z�������EZЕ������l]���X��?X6Y���r z5#���������/�$���p5ofu�D!
+^�&�O�8o@~x)�y���7!�dL�j����O�+!�.Q+endstream
+endobj
+132 0 obj
+2665
+endobj
+133 0 obj
+<</Subtype/Type1C/Filter/FlateDecode/Length 134 0 R>>stream
 x��VyTSW�@�,m_��df\kE�C��X�ZDԺ �������#���E���f♿��lӔ�)�ESg?��ܡ���9��=r�����@@ -1027,191 +1313,100 @@
 {5�Y� ���BU(��8��^c�6�������M��6�3��!
 endstream
 endobj
-102 0 obj
+134 0 obj
 2471
 endobj
-103 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 104 0 R>>stream
-x��VXT�>��P�F@m�G*^������/@	��!���(3�Ό� *�"��b�y��~Y}��L�ͻm�f��̜��{��
-��Q(�9A����4�zR	$t��еX�wm��q^_׏Q*3B�MMJ���5�|�O����$R㢣}����(�t��9���+}���eHM7�:�����f2���&23���Ɇ��3Mqi�fů^����a��W��f>3�Y�bf1�Ù�0ʌgF2!L83�	b�0s��&��ICf8&������2ҥC9Gy���D��n$�����������qv��b��Ґ̀��)�R��[)%vjrv��,H��܍�D�;�����������%�{� �q:�d��f���_A#5ɑ�
-��NE2X��.��o��uz"KW$�^�E������N[�8T\m���T�Ԡ��Q����pdJ�Jϝ-�9����5I}���J�i2���Zc��zG���3_!�����_��,#x�����"&�������������]N�������Z����#��'�tJ��N}��
-�n��g���z1�{C)���*��y/i׽�>��,0p(��4���w�mπ�]��ϊ>��Ǿ]MM���}��#�!S��ZtR��q*w�=~���k �_Q�����tbqm��&����iێ�8N���4��@K�\G�d�(j^/
-�-"��������řȈѦ���O c�xEW&Wf隌���y�_8e,��N�_�k�_y&Qp�a{�
-�h)Z޲ێ��J��Ս����—�{2��У%?Kd�m�oH��$Q�n�5�3"����X����8�t��C7�^���'u8*]���򪶻�̝��N�KοHC��؇-�CPWo��Y������)�R�u}�U��OLK�y���ek������������%7���F␥m^���_eo�g"g4R��1������Jy3>/��Of_�o-���+X����C�K�A��U��G;=�$쏁���Kn�4+a����
-ٺ��A5O�v}�d��ܽifo��M���^(�bc�]%���8
-��R��q�g�Qc�Sã!�ϖ�۵�+��J:��Ѫ�8������FK�5Ra�-I�9�ZJ7䁥�`����D6�b��x���A�.p��!ċ�2�v��NY*i�̌ͅE[t7Q�.d�*F�޵�8l�m��?�������Փ�|��x�%����k7@ ,����d���:�XQ�s��I���[����
-���%0b)
-�8
-�9dJ�]�P���K`�W�f?2�������AR�7u�>t������J��Ѐ�6�`l}ddl|-�m��_%X��%�LҴ#�kcc��)~��y$��,���c'���F��82-��L��}���򳫵Yy��Ԧ8��!���t���7(����\=6iv}4���]A[Ia1F8X���ݐ}L��ҽOS��;�{���[�endstream
+97 0 obj
+<</BaseFont/STGHFF+CMBX10/FontDescriptor 96 0 R/Type/Font
+/FirstChar 99/LastChar 115/Widths[ 511 0 0 0 0 0 0 0 0 0 958 0 0
+0 0 0 454]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
-104 0 obj
-2974
+30 0 obj
+<</BaseFont/NPGDEY+CMTT10/FontDescriptor 29 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 525 525 525 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 525 525 0 525]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
-105 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 106 0 R>>stream
-x�cd`ab`dddw�44-endstream
+28 0 obj
+<</BaseFont/KDYVGQ+CMSY10/FontDescriptor 27 0 R/Type/Font
+/FirstChar 178/LastChar 178/Widths[ 500]
+/Encoding 135 0 R/Subtype/Type1>>
 endobj
-106 0 obj
-237
+135 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+178/bullet]>>
 endobj
-107 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 108 0 R>>stream
-x��YXT׶>��cW�9�Xb�=�&cA���H:��:��:E�]�b�c}1��cb���Afr�����{��k#�,-(�H$Y�>}����0��
-����e�ka��ӆSb���š�c���~��޼w��}��;�Bܼ"� �m���ةNAAko�;��F�84xwd���-t��4���e+�bCv�-
-ݹq�>-	۵j���s�ߚ#�w�
-\�&�c�'�>卩�?�f�w��5�z��}D-��RoR����#���r��Qc�5ԇ�j��ZF͠��5��@��\�Y��j95��HyP+�9�ʍZD�Km�VR����
-�G��|�i$������Kz�F!@z�r@�
-B!(��;9�@銤��7�J�UG��F�|�0��}�7�lU���j.���ǧ�b��h�%����"�f���Z8��iv�oa
-o���)�:/A��)�*��2���a^�vŹ\���?Ճ���F���|������Pwm3�`&]Fl��l���ͱg��>[�Jz���'��d�O��þ�\'����D�6��+�Ӹ�N���� �њ�Q
-��!�NS���~��ă����7�u����#������3�D��\'ErĬ5��$0�ω�B����o���
-#J}�K�P)*+,,�����0���,%�\K{�LyJc<a�<u���<.��aAS����u���gPsk��-#ǭ'�h�6/v��I�����y\�����y�禝�f���z�X���%��:��?L��������7n^u�6���q	w|�+������X_$?��+ꉹaH�
-��?hm��}4M��m��ؤ�r�d���|t��_�ΙR=��x��Au�����44L����o0ȴ���[=��5�6q�,g7b>4�T���F��-!��hXѓU�l@�x!�^�����*
-&���>�,b��l���N��H� 
-�Uo ��%A�]����7%�D���7b��&�~�~�c��ߌ�6�Q"��:x�;c�Bw���t�͚���Orx��#)���������A���&E�ϟ�ڣ�n����	��X��Q;�¯��ax����� 65+&��ܰ.%-DO�˨.�e�.���H6H���F�?���v�Q����EM#�.dg"�&��%`Չ��&V�͢p�7��[�j�p���֐x[�����k5<��&������r������ɝ�OH�����3�Y��M][��<���������utyC͎3����ND� T�-C�'O�a	�#L�7�����G�ׯ�<�$�q�녫���~���5�%�}M]-����x���{�8ޛö�
-��ϐ�Io��vNڌa���)�d���T��W4���<v�;o��\
-[�J��hA��,�����˰��|q��'������p����_�m�?ݏ������S�ⴼ��.�T���6mb*kK�jcZ�mR����s�W��6�J�O������~�F�]ߴǞ��x�G�:%��JG�eIeJ5����{����9ZU���������m��X�7��Qu~�>�4v_Z����{�8�mE�b.?���TA�c$�f�Z�|.��C��'K���n��+v-����O�<R��R��$Z�b2TY9}R!�=�01|-U{	�{V�%U}F�ì&0����.�b�Κd���F	�:�}�.z/���w<L#$�~|t�M����d?i�֡C̷�9�ԜI	��ͩ�t5jF��5Q(y!W\X��߇�+u�h%����|�bW\(:~�L��"4��Չ衁8g�*���������|�����b	|o0�2��r/�o������k�$�6BЈ����E�R4��Tj(�J������n���4~ʨ8N鶆������g���	�Xc{ì�<��M���Aa���	
-��
-���kj����>s
-*����6�ؾjA���Wc���RY؇Zl�ۚ��.�*�-s�������6�8Vy���;Nހ����Ko�S'#.8���-^�`β���eY�D�G�`h��E�{b?��
-�Q��㟞��W#�heU�T�sq
-��1p���ѓ�ڣm�P������	"}pJ̖e�r0ڈʨ�ȸ�~B�`�|���__	��jЃ��O��W��@jj-^�@G�|��̸f���^G�i���;zH25���RO;�xx�w=�o��e^5�{��C�35��NT!$���?Z�K�N^�E����Rҙ
-	����ߒ"��`.3��ڪ���b��2�ȑD�Q�����,��Q��njI\*A�"���g�����Yh_��:��F�&J�hek�N* F�}z%������hQ�&��\[Ԯ�J��S��"�ϙ�%���4�i���-'�$"6ߕ�d����R��o�l��n�j�U�����E����m7\�eV��O��2s?��=�{|*P�oDը����F�-^^��n<�4����v��и�����9�&��F�������ՖŹrX.�y)K����!Q#�g{'�d� 
-��G2Fhh-�@>��!D�����)g[)����Q=ʫRU2����^�#���mn��k=P�b8��j�a�X�[P�B����UFG����+J��-�S������i��;����Rӳ���5?���[}|�����>&1\@���[�ォ[�X>�Q@*�.d�%G�-[d+:��
-�v�y*���_{�cn/������=e�r���9����H>0L���!����\�bڎ��������OW)j��\ri��t�?����v�׃�54���(i��t\C����"Z�r�����."��c�\���C�������(Yp��_/K����1�����=z�3�c��D��xUtC�����������`���f7���b]��h�"_�O�s��E%*����]�e��h�v���'C�c'�����������
-,�RWeg�2�R�X�B��W_���C��D�-7���-�v�۱��'��{a���m���u��9w���k�o�a�UGM|2��P�������K�^w�/�X�v.o�^���!��A����7a ����ܼ�|T�Ūä��UK`$���Mħ����<n.q2�Sy��e�z�G��|C@���J���_�f���il��_��P����@���-��
-<@7x�~�+�?
-endstream
+21 0 obj
+<</BaseFont/YEGZVR+CMR8/FontDescriptor 20 0 R/Type/Font
+/FirstChar 46/LastChar 175/Widths[ 295 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 0 0
+0 0 0 0 767 0 0 0 0 0 0 0 0 0 0 0
+0 531 0 472 0 472 325 531 590 295 0 561 295 885 590 531
+590 0 414 419 413 590 0 767 0 561 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 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 590]
+/Encoding 136 0 R/Subtype/Type1>>
 endobj
-108 0 obj
-6149
+136 0 obj
+<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
+175/fi]>>
 endobj
-109 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 110 0 R>>stream
-x��WTSW�>�Q�����p�C���/T���ڊ��<�	������b��UEKm�vl�h{�.��3���ջT��ܻ���V����j�%��l����ȩ�;��9���Eh�䵐�E�Mo��]�<\��e�\����23^*�����R����.�����iz�4F��O����lI���'S��N�I�n�}}cz\F|f�֎�Yd�<�������B�Nm�ޠ6Q+�W�g�eT��^�vR�L��B�@j����Im��@�Prj)�<�
-"G�\t������s��x���f���{xގ���v|������'�����v+ߧ�S��gڶ
-}��7��a-L�J
-���`H�e�~us>dBeuEU��r�j�h
-��t��� ނ$a�hV�I����M��Nӭ�~֔ݒ��Y$�8;v�d�՟�m�I���g����-u������+^��0���*��A�1�{�eO ����;�o�Ԍ�0����ʥ�)3��M�
-�^x
-K�����G�!W+��X����_�����:�ܑ�����^Gη��D����8��-Q�;�a
-/‹x�C�����D���N������#p��w�E��hS�L�WD-P��e�BD��:	#����c�SpNd�|[�L�'�DO"��L=|��]���#�����}�c�
-�9����j+#%�?[-_[�xt�/�_�E��>�e4IR�5��2ڈ�����mϠ\�k/t_��⅞nx!����:UCQ���R-��@8�����z�g��î5�$���w��ɡ0�y�&~�=�W��=�V�p�W8�����eW��(��v[�T`���̛�lK9����[�u���*�ش�\c_{���]x<��ߡ��ƉD����?�'q�t�B˯�ɻ4�<�����������)��<lgb�/�k��F�b^V�*��NfP�;�#_����p��z�������Ӱg����-JP��f����-���<}0Z*Fσa[;~�5��Q��y����d�Ij��ф����_k*����
-;{����l����`$�Ƒ�T�G����@�z]�������F����|V����V4���Oo�i�æ�B��Vzyd@T��+/�0*���!g�ٝ�b��y7x-�)I
-`G��������z��^�uU��f���J��Lՠ�ʺ|}�>�����Cɵ*�y���K�����m1���|(m�S����Ԉ�t�቏N$����k�� Ӆ����O���)שt���C�t����AI
-�����l���n�ޝ"d7��0�� T�q�*6�2x�����������-w�!)r@��w��r��I����cO��t�R��MD�V!�-2�Y�Y�����^���AP2�����k��<N'�OO����ju�%j�-K�й[gM���F.]����21ڪ�����J������j$����ss
-
-$^^����35�����v:zbfj��7��c��Xc�o����d��m��@]M($��$�����:�<*ɘ�<X�����	���sDW)����b��
-S�llA)
-b�g,����up�lup���qf�ndstream
+19 0 obj
+<</BaseFont/OTJKZH+CMR6/FontDescriptor 18 0 R/Type/Font
+/FirstChar 49/LastChar 49/Widths[ 611]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
-110 0 obj
-3328
+17 0 obj
+<</BaseFont/OTJKZH+CMR7/FontDescriptor 16 0 R/Type/Font
+/FirstChar 49/LastChar 49/Widths[ 569]
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
-111 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 112 0 R>>stream
-x�5P[HSa-��+68�x��&No���C\���N�x��7n�[���s�#o�-~!^OR�Z��-,J���6RA���ؠbˍ�8��h��rJ�������	�P�A%�k�a]�<Xi\"���C�гq�6�waEVNf��'=�������!�6y<��SEJ���������kD!ek/������b�K
-/�w��(��G;56����]Y���!����i��������c/����:rϛ��}��&��v��_EɂX��@�3(W!��vw[����6�F=;֣f-F������V��,��+�q�o���~�"k��(!~!�����,t3�endstream
-endobj
-112 0 obj
-656
-endobj
-113 0 obj
-<</Subtype/Type1C/Filter/FlateDecode/Length 114 0 R>>stream
-x�5�_Hq-I�����T�t���:P�QJ[o;�D:|0��׶���<6����q�������z )�b����D�i���?o��n�/Rß>��k̻fQ�-b��	r��h�Gi!D�N
-a����}UD�J��i�:��9R�cٛ�G�E�H�[�DEI�6>��%4�.����7����'��|1�=�kl��[���k��/�/\�4ŅAtRŋ�`"���pz����"z�-�)�E>��r���lx���TmH�"���	�Qu�\4�'� �;Bw��G�D-endstream
-endobj
-114 0 obj
-655
-endobj
 15 0 obj
-<</BaseFont/IOZVID+CMR10/FontDescriptor 14 0 R/Type/Font
-/FirstChar 11/LastChar 122/Widths[ 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
+<</BaseFont/AONGFL+CMR10/FontDescriptor 14 0 R/Type/Font
+/FirstChar 33/LastChar 177/Widths[ 278 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 0
-0 750 708 722 764 681 653 785 750 361 514 778 625 0 750 778
+0 750 708 722 764 681 653 785 750 361 514 778 625 917 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 115 0 R/Subtype/Type1>>
+556 528 392 394 389 556 528 722 528 528 444 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 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 583 556
+556 833]
+/Encoding 137 0 R/Subtype/Type1>>
 endobj
-115 0 obj
+137 0 obj
 <</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
-11/ff/fi
-14/ffi
 34/quotedblright
 39/quoteright
-92/quotedblleft]>>
+92/quotedblleft
+174/ff/fi/fl/ffi]>>
 endobj
 13 0 obj
-<</BaseFont/KSKQOQ+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 0 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
+<</BaseFont/LNNGDK+CMBX12/FontDescriptor 12 0 R/Type/Font
+/FirstChar 46/LastChar 121/Widths[ 313 0
+0 563 563 563 563 563 563 0 0 0 0 0 0 0 0 0
+0 850 0 813 0 738 0 884 0 419 0 881 0 1067 0 0
+0 0 839 0 782 0 0 0 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]
+625 0 459 444 438 625 594 813 594 594]
 /Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
 11 0 obj
-<</BaseFont/SCBIEE+CMR12/FontDescriptor 10 0 R/Type/Font
+<</BaseFont/YFNCED+CMR12/FontDescriptor 10 0 R/Type/Font
 /FirstChar 44/LastChar 120/Widths[ 272 0 272 0
-490 490 490 490 0 0 0 490 0 0 0 0 0 0 0 0
-762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 544 0 0 0 0 0 0 0 0 0 0 0 0
-0 490 544 0 0 435 0 490 0 272 0 517 272 816 544 490
-544 0 381 386 381 0 0 0 517]
+490 0 490 0 0 490 0 490 0 0 0 0 0 0 0 0
+762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 762
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 490 544 435 0 435 0 490 0 272 0 517 272 816 544 490
+0 0 381 386 381 0 0 0 517]
 /Encoding/WinAnsiEncoding/Subtype/Type1>>
 endobj
 9 0 obj
@@ -1222,102 +1417,102 @@
 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 116 0 R/Subtype/Type1>>
+/Encoding 138 0 R/Subtype/Type1>>
 endobj
-116 0 obj
+138 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 117 0 R/Subtype/Type1>>
+96 0 obj
+<</Type/FontDescriptor/FontName/STGHFF+CMBX10/FontBBox[0 -6 935 453]/Flags 4
+/Ascent 453
+/CapHeight 453
+/Descent -6
+/ItalicAngle 0
+/StemV 140
+/MissingWidth 383
+/CharSet(/c/s/m)/FontFile3 115 0 R>>
 endobj
-117 0 obj
-<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
-12/fi]>>
+29 0 obj
+<</Type/FontDescriptor/FontName/NPGDEY+CMTT10/FontBBox[-4 -229 537 694]/Flags 5
+/Ascent 694
+/CapHeight 694
+/Descent -229
+/ItalicAngle 0
+/StemV 80
+/AvgWidth 525
+/MaxWidth 525
+/MissingWidth 525
+/CharSet(/semicolon/L/A/y/less/n/c/braceleft/M/one/B/z/o/d/Y/N/C/equal/braceright/two/greater/p/e/parenleft/O/D/three/q/f/parenright/P/E/four/r/g/asterisk/Q/F/five/s/h/R/G/six/t/i/comma/S/exclam/H/seven/u/j/hyphen/T/quotedbl/eight/I/v/k/period/U/nine/w/l/a/slash/V/colon/underscore/x/m/b/zero/W)/FontFile3 117 0 R>>
 endobj
-35 0 obj
-<</BaseFont/WNYVFJ+CMSY10/FontDescriptor 34 0 R/Type/Font
-/FirstChar 15/LastChar 15/Widths[ 500]
-/Encoding 118 0 R/Subtype/Type1>>
+27 0 obj
+<</Type/FontDescriptor/FontName/KDYVGQ+CMSY10/FontBBox[0 0 443 444]/Flags 4
+/Ascent 444
+/CapHeight 444
+/Descent 0
+/ItalicAngle 0
+/StemV 66
+/CharSet(/bullet)/FontFile3 119 0 R>>
 endobj
-118 0 obj
-<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
-15/bullet]>>
+20 0 obj
+<</Type/FontDescriptor/FontName/YEGZVR+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/p/e/f/r/g/s/h/fi/t/i/u/T/k/period/w/l/a/m)/FontFile3 121 0 R>>
 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>>
+18 0 obj
+<</Type/FontDescriptor/FontName/OTJKZH+CMR6/FontBBox[0 0 505 665]/Flags 4
+/Ascent 665
+/CapHeight 665
+/Descent 0
+/ItalicAngle 0
+/StemV 75
+/MissingWidth 416
+/CharSet(/one)/FontFile3 123 0 R>>
 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 119 0 R/Subtype/Type1>>
+16 0 obj
+<</Type/FontDescriptor/FontName/OTJKZH+CMR7/FontBBox[0 0 473 664]/Flags 4
+/Ascent 664
+/CapHeight 664
+/Descent 0
+/ItalicAngle 0
+/StemV 70
+/MissingWidth 384
+/CharSet(/one)/FontFile3 125 0 R>>
 endobj
-119 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/IOZVID+CMR10/FontBBox[-40 -250 1009 750]/Flags 4
+<</Type/FontDescriptor/FontName/AONGFL+CMR10/FontBBox[-40 -250 1009 750]/Flags 4
 /Ascent 750
 /CapHeight 750
 /Descent -250
 /ItalicAngle 0
 /StemV 151
 /MissingWidth 333
-/CharSet(/colon/L/slash/A/y/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/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 95 0 R>>
+/CharSet(/L/A/y/n/ffi/c/M/one/B/z/o/d/Y/quoteright/N/two/C/quotedblleft/p/e/Z/parenleft/O/D/three/q/f/parenright/P/E/four/r/g/Q/F/quotedblright/five/s/h/R/G/fi/six/t/i/comma/S/exclam/H/fl/seven/u/j/hyphen/T/I/eight/v/k/ff/period/U/J/nine/w/l/a/slash/V/colon/K/x/m/b/zero/W)/FontFile3 127 0 R>>
 endobj
 12 0 obj
-<</Type/FontDescriptor/FontName/KSKQOQ+CMBX12/FontBBox[0 -201 1139 700]/Flags 4
+<</Type/FontDescriptor/FontName/LNNGDK+CMBX12/FontBBox[0 -201 1025 700]/Flags 4
 /Ascent 700
 /CapHeight 700
 /Descent -201
 /ItalicAngle 0
-/StemV 170
+/StemV 153
 /MissingWidth 375
-/CharSet(/colon/A/n/c/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 97 0 R>>
+/CharSet(/A/y/n/one/c/M/o/d/two/C/p/three/e/four/f/E/r/g/five/s/h/R/G/six/t/i/u/T/I/v/k/period/w/l/a/K/x/m/b)/FontFile3 129 0 R>>
 endobj
 10 0 obj
-<</Type/FontDescriptor/FontName/SCBIEE+CMR12/FontBBox[0 -205 793 704]/Flags 4
+<</Type/FontDescriptor/FontName/YFNCED+CMR12/FontBBox[0 -205 793 704]/Flags 4
 /Ascent 704
 /CapHeight 704
 /Descent -205
 /ItalicAngle 0
 /StemV 118
 /MissingWidth 326
-/CharSet(/n/zero/o/one/p/e/two/three/r/g/s/at/t/i/S/seven/comma/k/l/a/period/x/m/b)/FontFile3 99 0 R>>
+/CharSet(/n/c/o/two/e/O/r/g/at/five/s/t/i/comma/seven/k/period/l/a/x/m/b/zero)/FontFile3 131 0 R>>
 endobj
 8 0 obj
 <</Type/FontDescriptor/FontName/GRQREI+CMR17/FontBBox[0 -195 744 707]/Flags 4
@@ -1327,199 +1522,157 @@
 /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 101 0 R>>
+/CharSet(/A/o/d/quoteright/p/e/P/r/s/G/t/i/S/u/hyphen/T/v/U/J/l/a/m/b)/FontFile3 133 0 R>>
 endobj
-71 0 obj
-<</Type/FontDescriptor/FontName/FVSMAJ+CMBX10/FontBBox[0 -194 1164 705]/Flags 4
-/Ascent 705
-/CapHeight 705
-/Descent -194
-/ItalicAngle 0
-/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 103 0 R>>
-endobj
-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 105 0 R>>
-endobj
-27 0 obj
-<</Type/FontDescriptor/FontName/BNGLQK+CMTT10/FontBBox[-4 -229 537 694]/Flags 5
-/Ascent 694
-/CapHeight 694
-/Descent -229
-/ItalicAngle 0
-/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 107 0 R>>
-endobj
-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 109 0 R>>
-endobj
-18 0 obj
-<</Type/FontDescriptor/FontName/WTBOIB+CMR6/FontBBox[0 -21 564 675]/Flags 4
-/Ascent 675
-/CapHeight 675
-/Descent -21
-/ItalicAngle 0
-/StemV 84
-/MissingWidth 416
-/CharSet(/one/two/three/four)/FontFile3 111 0 R>>
-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 113 0 R>>
-endobj
 2 0 obj
 <</Producer(ESP Ghostscript 815.04)
-/CreationDate(D:20070913011146)
-/ModDate(D:20070913011146)>>endobj
+/CreationDate(D:20071005140903)
+/ModDate(D:20071005140903)>>endobj
 xref
-0 120
+0 139
 0000000000 65535 f 
-0000057592 00000 n 
-0000097719 00000 n 
-0000057441 00000 n 
-0000055103 00000 n 
+0000066241 00000 n 
+0000102433 00000 n 
+0000066059 00000 n 
+0000063133 00000 n 
 0000000015 00000 n 
-0000004983 00000 n 
-0000057640 00000 n 
-0000095723 00000 n 
-0000092143 00000 n 
-0000095441 00000 n 
-0000091790 00000 n 
-0000095111 00000 n 
-0000091405 00000 n 
-0000094648 00000 n 
-0000090749 00000 n 
-0000097494 00000 n 
-0000094483 00000 n 
-0000097269 00000 n 
-0000094318 00000 n 
-0000096972 00000 n 
-0000093805 00000 n 
-0000057681 00000 n 
-0000057711 00000 n 
-0000055271 00000 n 
-0000005003 00000 n 
-0000009788 00000 n 
-0000096463 00000 n 
-0000093323 00000 n 
-0000057807 00000 n 
-0000057837 00000 n 
-0000055433 00000 n 
-0000009809 00000 n 
-0000015049 00000 n 
-0000096270 00000 n 
-0000093087 00000 n 
-0000057891 00000 n 
-0000057921 00000 n 
-0000055603 00000 n 
-0000015070 00000 n 
-0000019971 00000 n 
-0000058019 00000 n 
-0000058049 00000 n 
-0000055773 00000 n 
-0000019992 00000 n 
-0000024265 00000 n 
-0000058092 00000 n 
-0000058122 00000 n 
-0000055943 00000 n 
-0000024286 00000 n 
-0000027939 00000 n 
-0000058187 00000 n 
-0000058217 00000 n 
-0000056105 00000 n 
-0000027960 00000 n 
-0000032908 00000 n 
-0000058282 00000 n 
-0000058312 00000 n 
-0000056275 00000 n 
-0000032929 00000 n 
-0000036537 00000 n 
-0000058355 00000 n 
-0000058385 00000 n 
-0000056437 00000 n 
-0000036558 00000 n 
-0000041334 00000 n 
-0000058450 00000 n 
+0000004256 00000 n 
+0000066289 00000 n 
+0000102164 00000 n 
+0000099058 00000 n 
+0000101886 00000 n 
+0000098707 00000 n 
+0000101575 00000 n 
+0000098324 00000 n 
+0000101099 00000 n 
+0000097595 00000 n 
+0000100893 00000 n 
+0000097442 00000 n 
+0000100687 00000 n 
+0000097289 00000 n 
+0000100428 00000 n 
+0000096757 00000 n 
+0000066330 00000 n 
+0000066360 00000 n 
+0000063293 00000 n 
+0000004276 00000 n 
+0000008756 00000 n 
+0000100235 00000 n 
+0000096518 00000 n 
+0000099711 00000 n 
+0000096030 00000 n 
+0000066456 00000 n 
+0000066486 00000 n 
+0000063455 00000 n 
+0000008777 00000 n 
+0000012766 00000 n 
+0000066551 00000 n 
+0000066581 00000 n 
+0000063617 00000 n 
+0000012787 00000 n 
+0000017530 00000 n 
+0000066635 00000 n 
+0000066665 00000 n 
+0000063779 00000 n 
+0000017551 00000 n 
+0000021607 00000 n 
+0000066708 00000 n 
+0000066738 00000 n 
+0000063941 00000 n 
+0000021628 00000 n 
+0000024687 00000 n 
+0000066792 00000 n 
+0000066822 00000 n 
+0000064103 00000 n 
+0000024708 00000 n 
+0000028843 00000 n 
+0000066865 00000 n 
+0000066895 00000 n 
+0000064265 00000 n 
+0000028864 00000 n 
+0000032233 00000 n 
+0000066960 00000 n 
+0000066990 00000 n 
+0000064427 00000 n 
+0000032254 00000 n 
+0000036373 00000 n 
+0000067033 00000 n 
+0000067063 00000 n 
+0000064589 00000 n 
+0000036394 00000 n 
+0000039558 00000 n 
+0000067128 00000 n 
+0000067158 00000 n 
+0000064751 00000 n 
+0000039579 00000 n 
+0000043600 00000 n 
+0000067201 00000 n 
+0000067231 00000 n 
+0000064913 00000 n 
+0000043621 00000 n 
+0000046710 00000 n 
+0000067296 00000 n 
+0000067326 00000 n 
+0000065075 00000 n 
+0000046731 00000 n 
+0000050756 00000 n 
+0000067380 00000 n 
+0000067410 00000 n 
+0000065237 00000 n 
+0000050777 00000 n 
+0000054293 00000 n 
+0000067453 00000 n 
+0000067483 00000 n 
+0000065399 00000 n 
+0000054314 00000 n 
+0000056677 00000 n 
+0000099498 00000 n 
+0000095838 00000 n 
+0000067537 00000 n 
+0000067567 00000 n 
+0000065561 00000 n 
+0000056698 00000 n 
+0000058458 00000 n 
+0000067610 00000 n 
+0000067641 00000 n 
+0000065727 00000 n 
 0000058480 00000 n 
-0000056599 00000 n 
-0000041355 00000 n 
-0000044536 00000 n 
-0000095992 00000 n 
-0000092583 00000 n 
-0000058534 00000 n 
-0000058564 00000 n 
-0000056761 00000 n 
-0000044557 00000 n 
-0000047486 00000 n 
-0000058629 00000 n 
-0000058659 00000 n 
-0000056931 00000 n 
-0000047507 00000 n 
-0000049786 00000 n 
-0000058757 00000 n 
-0000058787 00000 n 
-0000057101 00000 n 
-0000049807 00000 n 
-0000051586 00000 n 
-0000058830 00000 n 
-0000058860 00000 n 
-0000057271 00000 n 
-0000051607 00000 n 
-0000055082 00000 n 
-0000058903 00000 n 
-0000058933 00000 n 
-0000058976 00000 n 
-0000066492 00000 n 
-0000066513 00000 n 
-0000070573 00000 n 
-0000070594 00000 n 
-0000073490 00000 n 
-0000073512 00000 n 
-0000076071 00000 n 
-0000076093 00000 n 
-0000079155 00000 n 
-0000079177 00000 n 
-0000079502 00000 n 
-0000079523 00000 n 
-0000085760 00000 n 
-0000085782 00000 n 
-0000089198 00000 n 
-0000089220 00000 n 
-0000089964 00000 n 
-0000089985 00000 n 
-0000090728 00000 n 
-0000091263 00000 n 
-0000092490 00000 n 
-0000093002 00000 n 
-0000093234 00000 n 
-0000094233 00000 n 
+0000062234 00000 n 
+0000067685 00000 n 
+0000067716 00000 n 
+0000065893 00000 n 
+0000062256 00000 n 
+0000063112 00000 n 
+0000067760 00000 n 
+0000067791 00000 n 
+0000067857 00000 n 
+0000068559 00000 n 
+0000068580 00000 n 
+0000075021 00000 n 
+0000075043 00000 n 
+0000075365 00000 n 
+0000075386 00000 n 
+0000077818 00000 n 
+0000077840 00000 n 
+0000078215 00000 n 
+0000078236 00000 n 
+0000078615 00000 n 
+0000078636 00000 n 
+0000086370 00000 n 
+0000086392 00000 n 
+0000090460 00000 n 
+0000090482 00000 n 
+0000093235 00000 n 
+0000093257 00000 n 
+0000095816 00000 n 
+0000096667 00000 n 
+0000097203 00000 n 
+0000098181 00000 n 
+0000099405 00000 n 
 trailer
-<< /Size 120 /Root 1 0 R /Info 2 0 R
-/ID [(��ԧ��BӲ$�W�)(��ԧ��BӲ$�W�)]
+<< /Size 139 /Root 1 0 R /Info 2 0 R
+/ID [(���^O���.+�)(���^O���.+�)]
 >>
 startxref
-97830
+102544
 %%EOF

Modified: puppetor/trunk/doc/howto.tex
===================================================================
--- puppetor/trunk/doc/howto.tex	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/doc/howto.tex	2007-10-05 12:12:58 UTC (rev 11767)
@@ -12,8 +12,7 @@
 \section{Introduction}
 
 PuppeTor\footnote{The name signifies the metaphor of a puppeteer playing with
-puppets like this framework plays with Tor processes. This is a working title.
-Please feel free to suggest a better name for it.} is a Java framework that
+puppets like this framework plays with Tor processes.} 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
@@ -31,13 +30,10 @@
 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
 intervals between events originating from Tor processes and it can synchronize 
-with such events. Further, the application can re-configure processes during
-their execution using the Tor controller.\footnote{This is not implemented yet,
-but we already make heavy use of the controller, so that this addition is not a
-real problem.}
+with such events.
 
-There are two typical situations in which this framework can be useful:%
-\begin{enumerate}%
+There are two typical situations in which this framework can be useful:
+\begin{enumerate}
 \item Developers need to oversee the effects of their changes to the source code.
 Therefore, it is useful to have a clean setting of Tor nodes in a private
 network, so that all nodes are under full control of the developer.
@@ -49,15 +45,14 @@
 
 Of course, the applications described here are possible without this framework.
 But this framework has certain advantages over writing own configuration files
-and test scripts:%
+and test scripts:
 \begin{enumerate}
 \item It provides developers with pre-defined configurations of nodes.
 Especially the configuration of nodes in a private network with own directory
 nodes is not a trivial task.
 \item It takes away the need to implement synchronization of a test application
 with events created by Tor processes. This, too, is a non-trivial task and can,
-if not done properly, lead to deadlocks or inconsistent states (yes, this
-happened during development of the framework, too).
+if not done properly, lead to deadlocks or inconsistent states.
 \item It relieves the developer from the task to collect and merge log files.
 Typically, every Tor process produces its own log file, so that all files might
 need to be merged in chronological order to identify causal dependencies.
@@ -71,50 +66,59 @@
 
 \section{Installation}
 
-PuppeTor requires a Tor executable and the Java Tor Controller API which can
-both be downloaded from the Subversion repository on the Tor
-homepage.
+PuppeTor requires a Tor executable which can be downloaded from the Subversion
+repository on the Tor homepage. Though PuppeTor can also be used with the stable
+Tor versions, its primary intention is to be used for development, so that it
+is regularly updated to run with the current development version.
+Unfortunately, this sometimes includes configuration options that
+are not understood by older Tor versions and that would have to be removed
+explicitly.
+After downloading, you either need to make sure
+that the Tor executable is in the path, or put it to the base directory of this
+framework.
+
+You also need to download the Tor controller demonstration code from the
+Subversion
+repository on the Tor homepage and add them to your classpath. In order to use
+the Groovy shell, you further need to add the Groovy classes that are available
+on the Groovy homepage to the classpath. For convenience, the JARs containing
+both, the controller code and the Groovy classes, are included with PuppeTor:
+\begin{itemize}
+\item \verb+lib/torctl.jar+ contains the trunk version of the Tor controller
+demonstration code and
+\item \verb+lib/groovy-all-<version>.jar+ contains the Groovy classes.
+\end{itemize}
+
+Finally, you need to have a Java Runtime Environment version 5 or
+higher installed on your machine.
 
-After downloading, you either need to make sure that the Tor executable is in
-the path, or put it to the base directory of this framework. You also need to
-put the Tor Controller API classes somewhere. Further, you need to have a Java
-Runtime Environment version 5 or higher installed on your machine.
+\section{Examples}
+
+This user's guide takes the approach of stepwise introducing features by showing
+typical usage examples. Though these examples might not cover all features, the
+remaining features should be self-explanatory afterwards, maybe with a little
+help of the Javadocs.
+
+\subsection{Accessing a public web server over Tor}
 
-You can then start the examples with one of the following commands from the
-base directory of this framework, assuming that the Tor Controller API
-classes reside in directory \texttt{../torctl} (line break behind
-\texttt{examples.} included for layout reasons only):
-
+The easiest way to use Tor is to anonymously access a public web server. This is
+what we do in this first example.
+
+You can start the first example with the following command from the
+base directory of this framework:
+
 \begin{verbatim}
-java -cp bin:../torctl/bin
-    de.uniba.wiai.lspi.puppetor.examples.
+java -cp bin:lib/torctl.jar
+    de.uniba.wiai.lspi.puppetor.examples.
     AccessingPublicWebServerOverTor
-java -cp bin:../torctl/bin
-    de.uniba.wiai.lspi.puppetor.examples.
-    AdvertisingHiddenServiceToPublicTorNetwork
-java -cp bin:../torctl/bin
-    de.uniba.wiai.lspi.puppetor.examples.
-    AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork
-java -cp bin:../torctl/bin
-    de.uniba.wiai.lspi.puppetor.examples.
-    AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork
 \end{verbatim}
 
-\section{Example 1: Accessing public Web server over Tor}
+The network configuration consists only of one proxy node with an open
+SOCKS port and control port (every node needs to open its control
+port, so that we can communicate with it.)
 
-The easiest way to use Tor is to anonymously access a public Web server. This is
-what we do in this first example.
-
-The network configuration consists only of one node and looks like this:
-\begin{itemize}
-\item Proxy with control port\footnote{Every node needs to open its control
-port, so that we can communicate with it.} 7001 and SOCKS port 7002.
-\end{itemize}
-
-%%%%% picture of network setting? %%%%%
-
 In the following, we will walk through the code that is necessary to configure
-this ``network'' and perform the request to a public Web server.
+this ``network'' and perform the request to a public web server.
 
 We start with obtaining a \texttt{Network} instance which is the central place
 for each test run:
@@ -123,12 +127,13 @@
 Network network = NetworkFactory.createNetwork("example1");
 \end{verbatim}
 
-Now we are ready to create the Tor proxy that we need to perform our request. As
-stated above it should listen on port 7001 for us as controller and on 7002 for
-us as SOCKS client. The name is given for logging purposes only:
+Now we are ready to create the Tor proxy that we need to perform our request.
+The node will be assigned two port numbers for its SOCKS and control port
+automatically, starting at 7000 (can be changed for the network).
+The name is given for logging purposes and as event source name:
 
 \begin{verbatim}
-network.createProxy("proxy", 7001, 7002);
+network.createProxy("proxy");
 \end{verbatim}
 
 As we are fine with the pre-defined configuration (at least for the moment), we
@@ -139,23 +144,26 @@
 network.writeConfigurations();
 \end{verbatim}
 
-Next we start the nodes of our network. (The separation of this call from the
+Next we start the nodes of our network. (The reason for separating this step
+from the
 previous one is the possible investigation of the working directory content, if
-required. Starting nodes can fail for some reason and block our application
+required.) Starting nodes can fail for some reason and block our application
 forever. Therefore, we can provide a timeout in milliseconds after which we
 consider the operation as failed. Starting nodes is considered to be complete as
-soon as Tor opens its control port and we have connected to it:
+soon as all Tor nodes have opened their control ports and we have connected to
+them:
 
 \begin{verbatim}
 network.startNodes(5000);
 \end{verbatim}
 
 From time to time, Tor cannot create a circuit without some kind of launching
-assistance. Especially in a private-network setting nodes need to reboot in
+assistance. Especially in a private-network setting, nodes need to reboot in
 order to refresh their directory information and be able to build circuits.
 Hence, we send the nodes a ``HUP'' signal in regular intervals until it tells us
 that it has opened a circuit. In the following operation we can configure how
-often we want to retry and how long we want to wait in between retries:
+often we want to send this signal (here: 5 times) and how long we want to wait
+in between (here: 10 seconds):
 
 \begin{verbatim}
 network.hupUntilUp(5, 10000);
@@ -165,13 +173,13 @@
 
 Next is the client that will perform requests using our proxy. PuppeTor contains
 a \texttt{ClientApplication} class which can start a thread to perform simple
-HTTP GET requests to a given address and port. We provide it with a name for
-logging purposes, the address and port to look up, and the SOCKS port of our
-proxy:
+HTTP GET requests to a given address and port. We provide it with the name that
+is used for logging purposes and as event source, the address and port to send
+the request to, and the SOCKS port of our proxy:
 
 \begin{verbatim}
 ClientApplication client = network.createClient("client",
-    "www.google.com", 80, 7002);
+    "www.google.com", 80, proxy.getSocksPort());
 \end{verbatim}
 
 Before starting the request we want to register for events coming from this
@@ -179,32 +187,35 @@
 background, which allows more complex applications to perform multiple requests
 in parallel. Therefore, we implement the interface \texttt{EventListener}
 and its method \texttt{handleEvent(Event)}. In this method we are interested in
-the two events \texttt{Event.APPLICATION\_SENDING\_REQUEST} and
-\texttt{Event.APPLICATION\_REPLY\_RECEIVED}. What we do with these events is
+the two events \texttt{ClientEventType.CLIENT\_SENDING\_REQUEST} and
+\texttt{ClientEventType.CLIENT\_REPLY\_RECEIVED}.
+What we do with these events is
 application-specific. In our case we record the time of the first event and
 subtract it from the time of the second event to obtain the round-trip time of
 our request:
 
 \begin{verbatim}
-EventListener clientEventListener =
+EventListener clientEventListener =
     new EventListener() { // ... };
 \end{verbatim}
 
-Next we obtain a reference on the \texttt{EventManager} which handles all
+Next we obtain a reference to the \texttt{EventManager} which handles all
 asynchronous events coming from the Tor processes:
 
 \begin{verbatim}
 EventManager manager = network.getEventManager();
 \end{verbatim}
 
-We add our event handler to the event manager with the client as event subject:
+We add our event handler to the event manager with the client name
+as event source:
 
 \begin{verbatim}
-manager.addEventListener(client, clientEventListener);
+manager.addEventListener(client.getClientApplicationName(),
+    clientEventListener);
 \end{verbatim}
 
 Finally, we can perform the requests to the public server. Just in case that a
-request fails or times out, we state that we are willing to make three tries
+request fails or times out, we state that we are willing to make three attempts
 with a timeout of 20 seconds each, and that further requests should be aborted
 as soon as one request succeeds (last parameter \texttt{true}).
 
@@ -216,58 +227,66 @@
 the requests to be completed. We can do this by invoking a method on the event
 manager that blocks the invoking thread until a certain event is received. In
 this case we want to be blocked until the event
-\texttt{Event.APPLICATION\_REQUESTS\_PERFORMED} is received from our client:
+\texttt{ClientEventType.CLIENT\_REQUESTS\_PERFORMED} is received from our
+client:
 
 \begin{verbatim}
 manager.waitForAnyOccurence(client,
-    Event.APPLICATION_REQUESTS_PERFORMED);
+    ClientEventType.CLIENT_REQUESTS_PERFORMED);
 \end{verbatim}
 
-At last we shut down the proxy:
+Next we shut down the network containing our proxy:
 
 \begin{verbatim}
 network.shutdownNodes();
 \end{verbatim}
+
+At last we need to explicitly shut down the JVM. The reason is that some objects
+are accessible via RMI, and even though we are not using RMI in this examples,
+Java keeps a non-daemon thread running that prevents the JVM from exiting on
+its own.
+
+\begin{verbatim}
+System.exit(0);
+\end{verbatim}
+
+A typical output of example 1 might look like the following:
 
-A typical output of example 1 might look like the following:
-
 \begin{verbatim}
-Request took 527 millis
+Successfully started the node!
+Successfully built circuits!
+Request took 1228 milliseconds
+Goodbye.
 \end{verbatim}
 
-\section{Example 2: Advertising hidden service to public Tor network}
+\subsection{Advertising hidden service to public Tor network}
 
-The second-easiest example is to advertise a hidden service to the public Tor
-network, but not perform any requests to it. In fact this can be a useful test 
-to measure publication times of rendezvous service descriptors.
+The second example (\texttt{AdvertisingHiddenServiceToPublicTorNetwork})
+advertises a hidden service to the public Tor network, but does not perform any
+requests to it. In fact this can be a useful test to measure publication times
+of rendezvous service descriptors.
 
-The network configuration again consists only of one proxy node:
-\begin{itemize}
-\item Proxy with control port 7001 and SOCKS port 7002.
-\end{itemize}
+The network configuration again consists only of one proxy node.
 
-%%%%% picture of network setting? %%%%%
+We start again with creating a network and a proxy node.
 
-We start again with creating a network and a proxy node. But this time we keep a
-reference on the proxy node:
-
 \begin{verbatim}
 Network network = NetworkFactory.createNetwork("example2");
-ProxyNode proxy = network.createProxy("proxy", 7001, 7002);
+ProxyNode proxy = network.createProxy("proxy");
 \end{verbatim}
 
 Next we extend the configuration of the proxy by a hidden service entry. The
-hidden service gets the name \texttt{hidServ} which is used for its working directory
-and for logging purposes. It expects that the real service will run on
-\texttt{localhost:7001}, but announces to Tor that it runs on the virtual port
-80:
+hidden service gets the name \texttt{hidServ} which is used for its working
+directory and for logging purposes. It expects that the real service will run
+on the next free port (here: \texttt{7002}) and announces to Tor
+clients that it runs on the virtual port 80 (default value):
 
 \begin{verbatim}
-proxy.addHiddenService("hidServ", 7005, 80);
+proxy.addHiddenService("hidServ");
 \end{verbatim}
 
-The next step stays the same. We write the configuration of our proxy to its
-\texttt{torrc} file.
+The next step stays the same as in the previous example. We write the
+configuration of our proxy to its \texttt{torrc} file.
 
 \begin{verbatim}
 network.writeConfigurations();
@@ -275,11 +294,13 @@
 
 Before starting the proxy, we create and register an event listener that informs
 us about two events: when Tor opens a circuit
-(\texttt{Event.NODE\_CIRCUIT\_OPENED}) and when it has published a rendezvous
-service descriptor (\texttt{Event.NODE\_RSD\_PUBLISHED}).
+(\texttt{NodeEventType.NODE\_CIRCUIT\_OPENED}) and when it has published a
+rendezvous service descriptor
+(\texttt{HiddenServiceEventType.BOB\_DESC\_PUBLISHED\_RECEIVED}).
 
 \begin{verbatim}
-EventListener proxyEventListener = new EventListener() { // ... }
+EventListener proxyEventListener =
+    new EventListener() { // ... };
 \end{verbatim}
 
 Again we register this event listener at the event manager, but this time with
@@ -287,7 +308,8 @@
 
 \begin{verbatim}
 EventManager manager = network.getEventManager();
-manager.addEventListener(proxy, proxyEventListener);
+manager.addEventListener(proxy.getNodeName(),
+    proxyEventListener);
 \end{verbatim}
 
 The next steps are similar to the first example. We need to start the proxy and
@@ -295,39 +317,40 @@
 
 \begin{verbatim}
 network.startNodes(5000);
-network.hupUntilUp(5, 10000));
+network.hupUntilUp(5, 10000);
 \end{verbatim}
 
-As there is no event we could wait for, we fall asleep for five minutes to
+As there is no event we could wait for, we fall asleep for two minutes to
 observe publication of rendezvous service descriptors.
 
 \begin{verbatim}
-Thread.sleep(5L * 60L * 1000L);
+Thread.sleep(2L * 60L * 1000L);
 \end{verbatim}
 
-At the end we shut down the proxy.
+At the end we shut down the proxy and the JVM.
 
 \begin{verbatim}
-network.shutdownNodes();
+network.shutdownNodes();
+System.exit(0);
 \end{verbatim}
 
 A typical output of example 2 might look like the following:
 
 \begin{verbatim}
-Waiting for 2 minutes and observing RSD publications...
-RSD published 38514 millis after first circuit was opened
-RSD published 38514 millis after first circuit was opened
-RSD published 38779 millis after first circuit was opened
-RSD published 100074 millis after first circuit was opened
-RSD published 100567 millis after first circuit was opened
-RSD published 100568 millis after first circuit was opened
-Exiting...
+Successfully started the node!
+Successfully built circuits!
+Waiting for 2 minutes and observing RSD publications...
+RSD published 45128 milliseconds after first circuit was opened
+RSD published 51117 milliseconds after first circuit was opened
+RSD published 51118 milliseconds after first circuit was opened
+Goodbye.
 \end{verbatim}
 
-\section{Example 3: Advertising and accessing hidden service over public Tor
-network}
+\subsection{Advertising and accessing hidden service over public Tor network}
 
-This third example is in fact the first for which this framework originally has
+This third example
+(\texttt{AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork}) is in fact
+the first for which this framework originally has
 been built. The setting consists of two proxies that are connected to the
 public Tor network, a server that is connected as hidden server to the first
 proxy, and a client that performs requests using the second proxy. This scenario
@@ -336,26 +359,22 @@
 
 The network configuration consists of two proxy nodes and looks like this:
 \begin{itemize}
-\item Proxy \texttt{proxy1} with control port 7001 and SOCKS port 7002.
-\item Proxy \texttt{proxy2} with control port 7011 and SOCKS port 7012.
-\item Server that listens on port 7005 and is registered as hidden server at 
-\texttt{proxy1}.
-\item Client that performs requests using SOCKS port 7012, i.e. over
-\texttt{proxy2}.
+\item Proxy \texttt{proxy1}.
+\item Proxy \texttt{proxy2}.
+\item Server that is registered as hidden server at \texttt{proxy1}.
+\item Client that performs requests using the SOCKS port of \texttt{proxy2}.
 \end{itemize}
 
-%%%%% picture of network setting? %%%%%
-
 The example starts similar to the previous example with creating and configuring
 two proxy nodes. A hidden service is configured at the first proxy. Then
-configurations are written and nodes started until all of them have built a
-circuit.
+configurations are written, nodes are started and HUP'ed until all of them have
+built a circuit.
 
 \begin{verbatim}
 Network network = NetworkFactory.createNetwork("example3");
-ProxyNode proxy1 = network.createProxy("proxy1", 7001, 7002);
-network.createProxy("proxy2", 7011, 7012);
-proxy1.addHiddenService("hidServ", 7005, 80);
+ProxyNode proxy1 = network.createProxy("proxy1");
+ProxyNode proxy2 = network.createProxy("proxy2");
+HiddenService hidServ1 = proxy1.addHiddenService("hidServ");
 network.writeConfigurations();
 network.startNodes(5000);
 network.hupUntilUp(5, 10000);
@@ -369,42 +388,49 @@
 
 \begin{verbatim}
 EventManager manager = network.getEventManager();
-manager.waitForAnyOccurence(proxy1, Event.NODE_RSD_PUBLISHED,
+manager.waitForAnyOccurence(proxy1,
+    HiddenServiceEventType.BOB_DESC_PUBLISHED_RECEIVED
     3L * 60L * 1000L);
 \end{verbatim}
 
 As soon as the first descriptor has been published, we can initialize both, 
 server and client. In contrast to the first example the client will perform an
-empty HTTP GET on the hidden server's onion address instead of a public Web
+empty HTTP GET on the hidden server's onion address instead of a public web
 server. The server will answer with an empty HTTP OK:
 
 \begin{verbatim}
-ServerApplication server = network.createServer("server", 7005);
-String onionAddress = proxy1.getOnionAddress("hidServ");
-ClientApplication client = network.createClient("client", onionAddress,
-    80, 7012);
+ServerApplication server = network.createServer("server",
+    hidServ1.getServicePort());
+ClientApplication client = network.createClient("client",
+    hidServ1.determineOnionAddress(), hidServ1.getVirtualPort(),
+    proxy2.getSocksPort());
 \end{verbatim}
 
 For convenience we create a single event listener for both, client and server.
 It can distinguish client and server events by their type. We are interested in
-the events \texttt{Event.APPLICATION\_SENDING\_REQUEST} which is fired from the
-client before sending a request, \texttt{Event.APPLICATION\_REQUEST\_RECEIVED}
+the events \texttt{ClientEventType.CLIENT\_SENDING\_REQUEST} which is fired
+from the
+client before sending a request,
+\texttt{ServerEventType.SERVER\_RECEIVING\_REQUEST\_SENDING\_REPLY}
 which is fired by the server when a request is received, and
-\texttt{Event.APPLICATION\_REPLY\_RECEIVED}
+\texttt{ClientEventType.CLIENT\_REPLY\_RECEIVED}
 which is again fired by the client when it has received a reply. However, we
 need to register this event listener for both event sources, client and server.
 
 \begin{verbatim}
-EventListener clientAndServerEventListener = new EventListener() { // ... }
-manager.addEventListener(client, clientAndServerEventListener);
-manager.addEventListener(server, clientAndServerEventListener);
+EventListener clientAndServerEventListener =
+    new EventListener() { // ... };
+manager.addEventListener(client.getClientApplicationName(),
+    clientAndServerEventListener);
+manager.addEventListener(server.getServerApplicationName(),
+    clientAndServerEventListener);
 \end{verbatim}
 
 Now we instruct the server to listen for incoming requests and the client to
 perform such requests.
 
 \begin{verbatim}
-server.listen();
+server.startListening();
 client.performRequest(5, 45000, true);
 \end{verbatim}
 
@@ -412,75 +438,74 @@
 
 \begin{verbatim}
 manager.waitForAnyOccurence(client,
-    Event.APPLICATION_REQUESTS_PERFORMED);
+    ClientEventType.CLIENT_REQUESTS_PERFORMED);
 \end{verbatim}
 
-Finally, we shut down all nodes.
+Finally, we shut down all nodes and the JVM.
 
 \begin{verbatim}
-network.shutdownNodes();
+network.shutdownNodes();
+System.exit(0);
 \end{verbatim}
 
 A typical output of example 3 might look like the following:
 
 \begin{verbatim}
-Request took 13808 millis from client to server!
-Request took 14851 millis for the round-trip and 1043 millis from server to client!
-Exiting...
+Successfully started nodes!
+Successfully built circuits!
+Successfully published an RSD!
+Request took 14941 milliseconds from client to server!
+Request took 15927 milliseconds for the round-trip and
+    986 milliseconds from server to client!
+Goodbye.
 \end{verbatim}
 
-\section{Example 4: Advertising and accessing hidden service over private Tor
-network}
+\subsection{Advertising and accessing hidden service over private Tor network}
 
-The last example is by far the most complex. It involves setting up a private
+The fourth example
+(\texttt{AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork}) is a
+little more complex. It involves setting up a private
 Tor network including own directory nodes. The overall task stays the same as in
 the previous example: perform a request to a hidden service and see what
 happens. In this case performance does not mean too much, because there is
 no network latency on the local host. But in contrast to a public-network
-setting one could potentially observe what happens on all routers and directory
+setting we could observe what happens on all routers and directory
 nodes during the request.
 
 The network configuration now consists of three router nodes, which are used for
 performing onion routing and misused as proxies, two directory nodes, a client,
 and a server:
 \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.
-\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.
-\item Directory \texttt{dir2} with control port 7061, SOCKS port 7062, OR port
-7063, and dir port 7064.
-\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}.
+\item Router \texttt{router1}.
+\item Router \texttt{router2}.
+\item Router \texttt{router3}.
+\item Directory \texttt{dir1}.
+\item Directory \texttt{dir2}.
+\item Server that is registered as hidden server at \texttt{router1}.
+\item Client that performs requests using the SOCKS port of \texttt{router3}.
 \end{itemize}
 
-%%%%% picture of network setting? %%%%%
-
 Creating and configuring these nodes is done similar to all previous examples
 and requires no further explanation:
 
 \begin{verbatim}
 Network network = NetworkFactory.createNetwork("example4");
-RouterNode router1 = network.createRouter("router1", 7021, 7022, 7023, 7024);
-network.createRouter("router2", 7031, 7032, 7033, 7034);
-network.createRouter("router3", 7041, 7042, 7043, 7044);
-network.createDirectory("dir1", 7051, 7052, 7053, 7054);
-network.createDirectory("dir2", 7061, 7062, 7063, 7064);
-router1.addHiddenService("hidServ", 7025, 80);
+RouterNode router1 = network.createRouter("router1");
+network.createRouter("router2");
+RouterNode router3 = network.createRouter("router3");
+network.createDirectory("dir1");
+network.createDirectory("dir2");
+HiddenService hidServ1 = router1.addHiddenService("hidServ");
 \end{verbatim}
 
 However, the next step does require further explanation. The main difficulty
+of setting up a private Tor network
 lies in the fact that all nodes need to be configured so that they accept our
 own directory nodes instead of the pre-configured directory nodes from the
 public Tor network. This configuration requires the fingerprints of all
 directory nodes. These fingerprints are written to disk by the directory nodes
-as soon as they are started. But the directories need to be configured before
+as soon as they are started. But the directories need to be configured with
+these fingerprints before
 being started, too, in order to prevent them from becoming part of the public
 Tor network. And now we have the chicken or the egg dilemma.
 
@@ -492,12 +517,12 @@
 
 A second, non-trivial task is to authorize routers and directory nodes.
 Therefore, an authoritative directory needs to know all fingerprints of
-authorized nodes. They are stored in the \texttt{approved-routers} file in the
+authorized nodes, also before starting the directory nodes. They are stored in
+the \texttt{approved-routers} file in the
 working directory of the directory node.
 
-The complete task is encapsulated in the following method for convenience.
-However, all operations could also be performed directly on the nodes, if
-required.
+The complete configuration task is encapsulated in the following method for
+convenience.
 
 \begin{verbatim}
 network.configureAsPrivateNetwork();
@@ -507,72 +532,265 @@
 
 \begin{verbatim}
 network.writeConfigurations();
-network.startNodes(5000);
-network.hupUntilUp(8, 10000);
+network.startNodes(15000);
+network.hupUntilUp(10, 10000);
 EventManager manager = network.getEventManager();
-manager.waitForAnyOccurence(router1, Event.NODE_RSD_PUBLISHED,
-    3L * 60L * 1000L);
-ServerApplication server = network.createServer("server", 7025);
-String onionAddress = router1.getOnionAddress("hidServ");
-ClientApplication client = network.createClient("client", onionAddress,
-    80, 7042);
-EventListener clientAndServerEventListener = new EventListener() {
+manager.waitForAnyOccurence(router1.getNodeName(),
+    HiddenServiceEventType.BOB_DESC_PUBLISHED_RECEIVED,
+    3L * 60L * 1000L);
+ServerApplication server = network.createServer("server",
+    hidServ1.getServicePort());
+ClientApplication client = network.createClient("client",
+    hidServ1.getServicePort(), hidServ1.getVirtualPort(),
+    router3.getSocksPort());
+EventListener clientAndServerEventListener =
+    new EventListener() { // ... };
 manager.addEventListener(client, clientAndServerEventListener);
 manager.addEventListener(server, clientAndServerEventListener);
-server.listen();
+server.startListening();
 client.performRequest(5, 45000, true);
 manager.waitForAnyOccurence(client,
-    Event.APPLICATION_REQUESTS_PERFORMED);
+    ClientEventType.CLIENT_REQUESTS_PERFORMED);
 network.shutdownNodes();
 \end{verbatim}
 
 A typical output of example 4 might look like the following:
 
 \begin{verbatim}
-Successfully started nodes!
-Successfully built circuits!
-All RSDs published!
-Started server
-Handling event: APPLICATION_SENDING_REQUEST
-Handling event: APPLICATION_REQUEST_RECEIVED
-Handling event: APPLICATION_REPLY_RECEIVED
-Handling event: APPLICATION_REQUESTS_PERFORMED
+Successfully started nodes!
+Successfully built circuits!
+Successfully published an RSD!
+Started server
+Handling event: Sending request.
+Handling event: Receiving request.
+Handling event: Received response.
+Handling event: Requests performed.
+Goodbye.
 \end{verbatim}
+
+\subsection{Controlling a network using the Groovy shell}
+
+The first four examples demonstrated how PuppeTor can be used in a batch-like
+fashion. This fifth example (\texttt{LongRunningNetwork}) will show how to use
+it interactively by making a
+PuppeTor network accessible via RMI and connecting to it with a command shell
+that uses the Java-based script language Groovy.
+
+Therefore, we change the fourth example so that it only creates a private
+network and makes it available via RMI. Apart from the last step these these
+steps don't require further explanation.
+
+\begin{verbatim}
+Network network = NetworkFactory.createNetwork("example5");
+network.createRouter("router1");
+network.createRouter("router2");
+network.createRouter("router3");
+network.createDirectory("dir1");
+network.createDirectory("dir2");
+network.configureAsPrivateNetwork();
+network.writeConfigurations();
+network.startNodes(5000);
+network.hupUntilUp(10, 10000);
+\end{verbatim}
+
+The last step is to bind the \texttt{Network} object to a locally running RMI
+registry under its network name, so that it can be found by RMI clients:
+
+\begin{verbatim}
+network.bindAtRmiregistry();
+\end{verbatim}
+
+Starting this example requires that the \texttt{rmiregistry} has been started
+on the local host before.
+
+Further, Java needs two VM arguments, namely the
+location of an RMI policy file and the codebase:
+
+\begin{itemize}
+\item \verb+-Djava.security.policy=res/myrmipolicy+
+\item \verb+-Djava.rmi.server.codebase=file:///<puppetor-path>/bin/+
+\end{itemize}
+
+The typical output of the first part of example 5 should look like the
+following:
+
+\begin{verbatim}
+Successfully started nodes!
+Successfully built circuits!
+Bound at rmiregistry to name "example5"!
+Waiting until the end of time... Interrupt with Ctrl-C!
+\end{verbatim}
+
+Next, we can connect to the network from our Groovy shell. Groovy is a dynamic
+language that is based on Java with a lot of powerful extensions. Groovy
+commands can be interpreted and executed on the fly, and the Groovy shell
+can keep a state of bound variables to work with. A main advantage of using this
+shell is to interactively work with PuppeTor networks without the need to
+recompile and re-run the Java classes.
+
+The shell is started with the following command:
+
+\begin{verbatim}
+java -cp bin:lib/torctl.jar:lib/groovy-all-1.0.jar
+    de.uniba.wiai.lspi.puppetor.groovy.RmiPuppetzShell 
+\end{verbatim}
+
+The first thing to do is to connect to the already running network and bind it
+to a local variable:
+
+\begin{verbatim}
+network = shell.connectNetwork("127.0.0.1", "example5");
+\end{verbatim}
+
+Next, we want to add a hidden service to \texttt{router1}, rewrite its
+configuration and send it a HUP command to reload it:
+
+\begin{verbatim}
+router1 = network.getNode("router1");
+hidServ1 = router1.addHiddenService("hidServ");
+router1.writeConfiguration();
+router1.hup();
+\end{verbatim}
+
+Now we want to create a server that will listen on the service port of
+\texttt{hidServ1} and a client that will perform requests to that server:
+
+\begin{verbatim}
+server = network.createServer("server",
+    hidServ1.getServicePort());
+client = network.createClient("client",
+    hidServ1.determineOnionAddress(), hidServ1.getVirtualPort(),
+    router3.getSocksPort());
+\end{verbatim}
+
+And finally, we let the server start listening and the client start performing
+requests to our hidden server:
+
+\begin{verbatim}
+server.startListening();
+client.startRequests(5, 45000, true);
+\end{verbatim}
+
+The result is a number of events that should contain the following events
+in the \texttt{example5} tab (without Tor log statements):
+
+\begin{verbatim}
+Sending request.
+Receiving request.
+Received response.
+Requests performed.
+\end{verbatim}
+
+\subsection{Merging two private networks via RMI}
+
+The sixth example uses the RMI capability of PuppeTor to merge two network
+configurations, so that the Tor nodes in the two networks consider all nodes to
+be in a single private network. There are at least two applications for doing
+this:
+\begin{enumerate}
+\item In some situations Tor nodes
+need to be running for a certain time before a test can be executed. For
+example it is necessary that directory nodes in a private network are running
+for about 15 to 20 minutes before proxy nodes believe in the directory
+information they obtain from them. Therefore, one can run a
+long-term network and merge a short-running network with it
+that is only used for a single test.
+\item Some tests might require a big number of nodes which cannot be run on a
+single host. Therefore, the nodes could be distributed among multiple
+physical hosts to use their combined resources.
+\end{enumerate}
+
+This sixth example requires the long-running network of \texttt{example5} to be
+still running,
+creates a second network of two router nodes, and merges it with the
+long-running network. Afterwards it provides a hidden service on the first
+router node and accesses it via the second router node.
+
+The example starts with configuring two router nodes, one of them providing a
+hidden service:
+
+\begin{verbatim}
+Network network = NetworkFactory.createNetwork("example6", 7200);
+RouterNode router4 = network.createRouter("router4");
+RouterNode router5 = network.createRouter("router5");
+HiddenService hidServ1 = router4.addHiddenService("hidServ");
+\end{verbatim}
+
+In the next step, we connect to the remote network and configure both networks
+to exchange directory strings and router fingerprints, so that the Tor nodes
+will consider all nodes to be part of a merged network:
+
+\begin{verbatim}
+Network remoteNetwork =
+    NetworkFactory.connectToNetwork("127.0.0.1", "example5");
+network.configureAsInterconnectedPrivateNetwork(remoteNetwork);
+\end{verbatim}
+
+Next, we have to rewrite the configurations of the remote nodes and make the
+directories reload their own configurations, including the extended
+\texttt{approved-routers} files:
+
+\begin{verbatim}
+remoteNetwork.writeConfigurations();
+remoteNetwork.hupAllDirectories();
+\end{verbatim}
+
+Now we can write the configurations of the nodes in the local network and start
+them as usual. Afterwards, we wait for the first rendezvous service descriptor
+to be published, before starting the server and performing the client requests.
+Finally, we shut down the local nodes:
+
+\begin{verbatim}
+network.writeConfigurations();
+network.startNodes(5000);
+network.hupUntilUp(20, 5000);
+manager.waitForAnyOccurence(router4.getNodeName(),
+    HiddenServiceEventType.BOB_DESC_PUBLISHED_RECEIVED,
+    3L * 60L * 1000L);
+ServerApplication server = network.createServer("server",
+    hidServ1.getServicePort());
+ClientApplication client = network.createClient("client",
+    hidServ1.determineOnionAddress(), hidServ1.getVirtualPort(),
+    router5.getSocksPort());
+EventManager manager = network.getEventManager();
+EventListener listener = new EventListener() { // ... };
+manager.addEventListener(listener);
+server.startListening();
+client.startRequests(5, 45000, true);
+manager.waitForAnyOccurence(client.getClientApplicationName(),
+    ClientEventType.CLIENT_REQUESTS_PERFORMED);
+network.shutdownNodes();
+\end{verbatim}
+
+The output of this example should be equal to that of example 4:
+
+\begin{verbatim}
+Successfully started nodes!
+Successfully built circuits!
+Successfully published an RSD!
+Started server
+Handling event: Sending request.
+Handling event: Receiving request.
+Handling event: Received response.
+Handling event: Requests performed.
+Goodbye.
+\end{verbatim}
+
+This example can also be run with proxy nodes. However, in that case
+\texttt{example5} must be started at least 20 minutes before \texttt{example6}!
+Further, the directories in the remote network would neither have to rewrite
+their configurations nor be HUP'ed. The advantage of using proxies instead of
+routers is that they don't leave behind orphaned router descriptors as this
+example does.
 
-\section{Tests of distributed storage for hidden service
-descriptors}
-
-The purpose of the tests in package
-\texttt{de.uniba.wiai.lspi.puppetor.diststorage} is the validation
-of the distributed storage for hidden service descriptors as described
-in proposal 114.
-\textbf{WARNING: These examples do not work with an unmodified Tor!}
-
-\section{Architecture}
-
-Though the examples show how to use the simulator, they do not provide insights
-into the architecture of the implementation. This section will explain some
-design decisions.
-
-Every Tor process has the following input and output ports to which we connect:
-\begin{enumerate}
-  \item Standard out/err
-  \item Control port
-  \item SOCKS port
-  \item OR port
-  \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
+trunk on log level \texttt{INFO} or higher. 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.
 
@@ -680,14 +898,13 @@
 
 \section{Known issues}
 
-There is already a small list of problems and open questions that require more
+There is a small list of problems and open questions that require more
 investigation:
 
 \begin{itemize}
 \item When logging to stdout is set to something lower than \texttt{notice}, the
 application does not succeed.
-%
 \item Fight the TODOs\ldots
 \end{itemize}
 
-\end{document} 
\ No newline at end of file
+\end{document} 

Deleted: puppetor/trunk/lib/bcpg-jdk16-137.jar
===================================================================
(Binary files differ)

Deleted: puppetor/trunk/lib/bcprov-jdk16-137.jar
===================================================================
(Binary files differ)

Added: puppetor/trunk/lib/torctl.jar
===================================================================
(Binary files differ)


Property changes on: puppetor/trunk/lib/torctl.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientApplication.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -31,6 +31,9 @@
  */
 package de.uniba.wiai.lspi.puppetor;
 
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
 /**
  * The <code>ClientApplication</code> can be used to simulate simple
  * <code>HTTP GET</code> requests by a virtual local client. Therefore, an
@@ -40,7 +43,7 @@
  * 
  * @author kloesing
  */
-public interface ClientApplication {
+public interface ClientApplication extends Remote {
 
 	/**
 	 * <p>
@@ -48,8 +51,8 @@
 	 * port. All requests are performed by a thread in the background, so that
 	 * this method returns immediately. That thread will try for
 	 * <code>retries</code> times to make the request with a timeout of
-	 * <code>timeoutForEachRetry</code> milliseconds each. If an attempt is not
-	 * successful, the thread nevertheless waits for the timeout to expire
+	 * <code>timeoutForEachRetry</code> milliseconds each. If an attempt is
+	 * not successful, the thread nevertheless waits for the timeout to expire
 	 * before performing the next attempt. If <code>stopOnSuccess</code> is
 	 * set to <code>true</code>, the thread will quit performing requests
 	 * immediately after the first successful request.
@@ -82,45 +85,57 @@
 	 * @throws IllegalArgumentException
 	 *             Thrown if an invalid value is given for either of the
 	 *             parameters.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
 	public abstract void startRequests(int retries, long timeoutForEachRetry,
-			boolean stopOnSuccess);
+			boolean stopOnSuccess) throws RemoteException;
 
 	/**
 	 * Stops all requests that are currently running.
 	 * 
 	 * @throws IllegalStateException
 	 *             Thrown if no requests have been started before.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract void stopRequest();
+	public abstract void stopRequest() throws RemoteException;
 
 	/**
 	 * Returns the name of this client.
 	 * 
 	 * @return The name of this client.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract String getClientApplicationName();
+	public abstract String getClientApplicationName() throws RemoteException;
 
 	/**
 	 * Returns the SOCKS port of the local Tor node to which requests are sent.
 	 * 
 	 * @return The SOCKS port of the local Tor node to which requests are sent.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract int getSocksPort();
+	public abstract int getSocksPort() throws RemoteException;
 
 	/**
 	 * Returns the target name for the requests sent by this client; can be
 	 * either a server name/address or an onion address.
 	 * 
 	 * @return The target name for the requests sent by this client.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract String getTargetName();
+	public abstract String getTargetName() throws RemoteException;
 
 	/**
 	 * Returns the target port for the requests sent by this client; can be
 	 * either a server port or a virtual port of a hidden service.
 	 * 
 	 * @return The target port for the requests sent by this client.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract int getTargetPort();
+	public abstract int getTargetPort() throws RemoteException;
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientEventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientEventType.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ClientEventType.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -35,6 +35,7 @@
  * Event types that can be fired by a client application running as thread in
  * the background.
  */
+@SuppressWarnings("serial")
 public class ClientEventType implements EventType {
 
 	/**

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/EventType.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -31,6 +31,8 @@
  */
 package de.uniba.wiai.lspi.puppetor;
 
+import java.io.Serializable;
+
 /**
  * The super interface of possible event types that are fired on a state change
  * of an asynchronous system component, e.g. a Tor process or a client/server
@@ -38,7 +40,7 @@
  * 
  * @author kloesing
  */
-public interface EventType {
+public interface EventType extends Serializable {
 
 	/**
 	 * Returns a string representation of the event type name for display

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenService.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenService.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenService.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -1,12 +1,15 @@
 package de.uniba.wiai.lspi.puppetor;
 
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
 /**
  * A <code>HiddenService</code> instance contains all configurations of a
  * hidden service that is registered at a node.
  * 
  * @author kloesing
  */
-public interface HiddenService {
+public interface HiddenService extends Remote {
 
 	/**
 	 * Determines the onion address for a previously added hidden service with
@@ -29,28 +32,37 @@
 	 *             be read, which is also the case when the node's configuration
 	 *             has not been written and the node has not been HUP'ed after
 	 *             configuring the hidden service.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract String determineOnionAddress() throws PuppeTorException;
+	public abstract String determineOnionAddress() throws PuppeTorException,
+			RemoteException;
 
 	/**
 	 * Returns the name of the hidden service.
 	 * 
 	 * @return The name of the hidden service.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public String getServiceName();
+	public String getServiceName() throws RemoteException;
 
 	/**
 	 * Returns the port on which the service listens for requests.
 	 * 
 	 * @return The port on which the service listens for requests.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public int getServicePort();
+	public int getServicePort() throws RemoteException;
 
 	/**
 	 * Returns the virtual port that this hidden service runs on as it is
 	 * announced to clients.
 	 * 
 	 * @return The virtual port of this hidden service.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public int getVirtualPort();
+	public int getVirtualPort() throws RemoteException;
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenServiceEventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenServiceEventType.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/HiddenServiceEventType.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -35,6 +35,7 @@
  * Event types that can be fired by all Tor processes performing hidden-service
  * operations.
  */
+@SuppressWarnings("serial")
 public class HiddenServiceEventType implements EventType {
 
 	/**

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeEventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeEventType.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/NodeEventType.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -34,6 +34,7 @@
 /**
  * Event types that can be fired by all Tor processes.
  */
+@SuppressWarnings("serial")
 public class NodeEventType implements EventType {
 
 	/**

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerApplication.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerApplication.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerApplication.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -31,6 +31,9 @@
  */
 package de.uniba.wiai.lspi.puppetor;
 
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
 /**
  * The <code>ServerApplication</code> can be used as simple HTTP server that
  * answers all <code>HTTP GET</code> requests by empty <code>HTTP OK</code>
@@ -39,7 +42,7 @@
  * 
  * @author kloesing
  */
-public interface ServerApplication {
+public interface ServerApplication extends Remote {
 
 	/**
 	 * Starts listening for incoming <code>HTTP GET</code> requests from
@@ -49,8 +52,10 @@
 	 * 
 	 * @throws IllegalStateException
 	 *             Thrown if the server is currently not in listening state.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract void startListening();
+	public abstract void startListening() throws RemoteException;
 
 	/**
 	 * Stops listening for requests. This method may only be invoked when the
@@ -58,27 +63,35 @@
 	 * 
 	 * @throws IllegalStateException
 	 *             Thrown if the server is currently in listening state.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract void stopListening();
+	public abstract void stopListening() throws RemoteException;
 
 	/**
 	 * Returns whether this server is currently in listening state.
 	 * 
 	 * @return The listening state of this server.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract boolean isListening();
+	public abstract boolean isListening() throws RemoteException;
 
 	/**
 	 * Returns the name of this server.
 	 * 
 	 * @return The name of this server.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract String getServerApplicationName();
+	public abstract String getServerApplicationName() throws RemoteException;
 
 	/**
 	 * Returns the port on which this server listens.
 	 * 
 	 * @return The port on which this server listens.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
-	public abstract int getServerPort();
+	public abstract int getServerPort() throws RemoteException;
 }

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerEventType.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerEventType.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/ServerEventType.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -35,6 +35,7 @@
  * Event types that can be fired by a server application running as thread in
  * the background.
  */
+@SuppressWarnings("serial")
 public class ServerEventType implements EventType {
 
 	/**

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AccessingPublicWebServerOverTor.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -91,7 +91,7 @@
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPrivateTorNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -68,17 +68,15 @@
 	public static void main(String[] args) throws PuppeTorException,
 			RemoteException {
 
-		// create a network to initialize a test case
+		// create a network to initialize the test case
 		Network network = NetworkFactory.createNetwork("example4");
 
-		// create three router nodes with parameters (router name, control port,
-		// SOCKS port, OR port, dir mirror port)
+		// create three router nodes
 		RouterNode router1 = network.createRouter("router1");
 		network.createRouter("router2");
 		RouterNode router3 = network.createRouter("router3");
 
-		// create two directory nodes with parameters (router name, control
-		// port, SOCKS port, OR port, dir port)
+		// create two directory nodes
 		network.createDirectory("dir1");
 		network.createDirectory("dir2");
 
@@ -88,16 +86,16 @@
 		// configure nodes of this network to be part of a private network
 		network.configureAsPrivateNetwork();
 
-		// write configuration of proxy node
+		// write node configurations
 		network.writeConfigurations();
 
-		// start proxy node and wait until it has opened a circuit with a
-		// timeout of 15 seconds
-		if (!network.startNodes(15000)) {
+		// start nodes and wait until they have opened a circuit with a timeout
+		// of 5 seconds
+		if (!network.startNodes(5000)) {
 
 			// failed to start the nodes
 			System.out.println("Failed to start nodes!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully started nodes!");
 
@@ -107,7 +105,7 @@
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 
@@ -120,7 +118,7 @@
 				3L * 60L * 1000L)) {
 			// failed to publish an RSD
 			System.out.println("Failed to publish an RSD!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully published an RSD!");
 
@@ -128,23 +126,15 @@
 		ServerApplication server = network.createServer("server", hidServ1
 				.getServicePort());
 
-		// determine onion address for hidden service
-		String onionAddress = hidServ1.determineOnionAddress();
-
-		// start server
-		server.startListening();
-		System.out.println("Started server");
-
 		// create client application
-		ClientApplication client = network.createClient("client", onionAddress,
-				hidServ1.getVirtualPort(), router3.getSocksPort());
+		ClientApplication client = network.createClient("client", hidServ1
+				.determineOnionAddress(), hidServ1.getVirtualPort(), router3
+				.getSocksPort());
 
 		// register event listener
 		EventListener clientAndServerEventListener = new EventListener() {
-
 			public void handleEvent(Event event) {
-				System.out.println("Handling event: " + event);
-
+				System.out.println("Handling event: " + event.getMessage());
 			}
 		};
 		manager.addEventListener(client.getClientApplicationName(),
@@ -152,6 +142,10 @@
 		manager.addEventListener(server.getServerApplicationName(),
 				clientAndServerEventListener);
 
+		// start server
+		server.startListening();
+		System.out.println("Started server");
+
 		// perform at most five request with a timeout of 45 seconds each
 		client.startRequests(5, 45000, true);
 

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingAndAccessingHiddenServiceOverPublicTorNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -69,7 +69,7 @@
 	public static void main(String[] args) throws PuppeTorException,
 			RemoteException {
 
-		// create a network to initialize a test case
+		// create a network to initialize the test case
 		Network network = NetworkFactory.createNetwork("example3");
 
 		// create two proxy nodes
@@ -79,16 +79,16 @@
 		// add hidden service to the configuration of proxy1
 		HiddenService hidServ1 = proxy1.addHiddenService("hidServ");
 
-		// write configuration of proxy node
+		// write configuration of proxy nodes
 		network.writeConfigurations();
 
-		// start proxy node and wait until it has opened a circuit with a
-		// timeout of 5 seconds
+		// start nodes and wait until they have 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.exit(0);
 		}
 		System.out.println("Successfully started nodes!");
 
@@ -98,7 +98,7 @@
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 
@@ -112,7 +112,7 @@
 
 			// failed to publish an RSD
 			System.out.println("Failed to publish an RSD!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully published an RSD!");
 
@@ -120,12 +120,10 @@
 		ServerApplication server = network.createServer("server", hidServ1
 				.getServicePort());
 
-		// determine onion address for hidden service
-		String onionAddress = hidServ1.determineOnionAddress();
-
 		// create client application
-		ClientApplication client = network.createClient("client", onionAddress,
-				hidServ1.getVirtualPort(), proxy2.getSocksPort());
+		ClientApplication client = network.createClient("client", hidServ1
+				.determineOnionAddress(), hidServ1.getVirtualPort(), proxy2
+				.getSocksPort());
 
 		// create event listener to listen for client and server application
 		// events

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/AdvertisingHiddenServiceToPublicTorNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -65,15 +65,14 @@
 	public static void main(String[] args) throws PuppeTorException,
 			RemoteException {
 
-		// though we only need one proxy, we always need to create a network
-		// to initialize a test case
+		// create a network to initialize the test case
 		Network network = NetworkFactory.createNetwork("example2");
-
+		
 		// create a single proxy node
 		ProxyNode proxy = network.createProxy("proxy");
 
 		// add hidden service to the configuration
-		proxy.addHiddenService("hidServ", 7005, 80);
+		proxy.addHiddenService("hidServ");
 
 		// write configuration of proxy node
 		network.writeConfigurations();
@@ -109,7 +108,7 @@
 
 			// failed to start the proxy
 			System.out.println("Failed to start the node!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully started the node!");
 
@@ -119,7 +118,7 @@
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/LongRunningNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/LongRunningNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/LongRunningNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -35,19 +35,19 @@
 
 import java.rmi.RemoteException;
 
-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.PuppeTorException;
 
 /**
  * Example for starting and running a private network of routers and directories
- * that may be accessed via RMI, e.g. to be merged with another network. Note
- * that the <code>rmiregistry</code> must be running in order to run this
+ * that may be accessed via RMI, e.g. to be merged with another network.
+ * 
+ * Note that the <code>rmiregistry</code> must be running in order to run this
  * example.
  * 
+ * TODO further requirements for starting this example
+ * 
  * @author pgeyer, jjungkunst, sschilling
  */
 public class LongRunningNetwork {
@@ -66,53 +66,39 @@
 	public static void main(String[] args) throws PuppeTorException,
 			RemoteException {
 
-		// create a network to initialize a test case (networkName, startPort)
-		Network network = NetworkFactory.createNetwork("longRunning");
+		// create a network to initialize the test case
+		Network network = NetworkFactory.createNetwork("example5");
 
-		// create two directory nodes
-		network.createDirectory("dir1");
-		network.createDirectory("dir2");
-
-		// create six router nodes
+		// create three router nodes
 		network.createRouter("router1");
 		network.createRouter("router2");
 		network.createRouter("router3");
-		network.createRouter("router4");
-		network.createRouter("router5");
-		network.createRouter("router6");
 
-		// obtain reference to event manager to be able to respond to events
-		EventManager manager = network.getEventManager();
-		EventListener listener = new EventListener() {
-			public void handleEvent(Event event) {
-				System.out.println(event);
-			}
-		};
-		manager.addEventListener(listener);
+		// create two directory nodes
+		network.createDirectory("dir1");
+		network.createDirectory("dir2");
 
 		// configure nodes of this network to be part of a private network
 		network.configureAsPrivateNetwork();
-		System.out.println("Network written ...");
 
-		// write configuration of proxy node
+		// write node configurations
 		network.writeConfigurations();
-		System.out.println("Config written ...");
 
 		// start proxy node and wait until it has opened a circuit with a
 		// timeout of 5 seconds
 		if (!network.startNodes(5000)) {
-			System.out.println("Failed to start the nodes!");
-			return;
+			System.out.println("Failed to start nodes!");
+			System.exit(0);
 		}
-		System.out.println("Nodes started ...");
+		System.out.println("Successfully started nodes!");
 
-		// hup until the nodes have built circuits (5 retries, 10 seconds timeout
+		// hup until nodes have built circuits (10 retries, 10 seconds timeout
 		// each)
-		if (!network.hupUntilUp(5, 10000)) {
+		if (!network.hupUntilUp(10, 10000)) {
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 
@@ -122,7 +108,7 @@
 			// failed to bind at rmiregistry
 			System.out.println("Failed to bind at rmiregistry! "
 					+ "Is rmiregistry running?");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Bound at rmiregistry to name \""
 				+ network.getNetworkName() + "\"!");

Deleted: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingProxiesWithLongRunningNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingProxiesWithLongRunningNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingProxiesWithLongRunningNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2007, Patrick Geyer, Johannes Jungkunst, Karsten Loesing,
- * Stefan Schilling
- *
- * 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.
- */
-
-/*
- * 
- * WARNING! This class is untested, yet! Don't rely on it!
- *
- */
-
-package de.uniba.wiai.lspi.puppetor.examples;
-
-import java.rmi.RemoteException;
-
-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.PuppeTorException;
-
-/**
- * Example for a private network containing only proxies that is merged with
- * another, long-running private network that contains routers and directories.
- * Note that <code>LongRunningNetwork</code> must be running in order to run
- * this example.
- * 
- * @author pgeyer, jjungkunst, sschilling
- */
-public class MergingProxiesWithLongRunningNetwork {
-
-	/**
-	 * Sets up and runs the test.
-	 * 
-	 * @param args
-	 *            Command-line arguments (ignored).
-	 * @throws PuppeTorException
-	 *             Thrown if there is a problem with the JVM-external Tor
-	 *             processes that we cannot handle.
-	 * @throws RemoteException
-	 *             Thrown if an error occurs when accessed remotely.
-	 */
-	public static void main(String[] args) throws PuppeTorException,
-			RemoteException {
-
-		// create a network to initialize a test case
-		Network network = NetworkFactory.createNetwork("proxies", 8000);
-
-		// create two proxy nodes
-		network.createProxy("client", 9001, 9050);
-		network.createProxy("server", 9051, 9002);
-
-		// obtain reference to event manager to be able to respond to events
-		EventManager manager = network.getEventManager();
-		EventListener listener = new EventListener() {
-			public void handleEvent(Event event) {
-				System.out.println(event);
-			}
-		};
-		manager.addEventListener(listener);
-
-		// obtain a reference on the remote long-running network
-		Network remoteNetwork = NetworkFactory.connectToNetwork("127.0.0.1",
-				"longRunning");
-
-		// merge configuration with long-running network
-		System.out.println("Merging network configurations...");
-		network.configureAsInterconnectedPrivateNetwork(remoteNetwork);
-		System.out.println("Network configurations merged!");
-
-		// write configuration of proxy node
-		network.writeConfigurations();
-		System.out.println("Config written ...");
-
-		// start proxy node and wait until it has opened a circuit with a
-		// timeout of 5 seconds
-		if (!network.startNodes(5000)) {
-			System.out.println("Failed to start the nodes!");
-			return;
-		}
-		System.out.println("Nodes started ...");
-
-		// hup until proxy has built circuits (20 retries, 5 seconds timeout
-		// each)
-		if (!network.hupUntilUp(20, 5000)) {
-
-			// failed to build circuits
-			System.out.println("Failed to build circuits!");
-			return;
-		}
-		System.out.println("Successfully built circuits!");
-
-		// wait for an hour
-		try {
-			Thread.sleep(60 * 60 * 1000);
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
-
-		// shutdown after hours
-		network.shutdownNodes();
-
-		// Shut down the JVM
-		System.out.println("Goodbye.");
-		System.exit(0);
-	}
-}
\ No newline at end of file

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingRoutersWithLongRunningNetwork.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingRoutersWithLongRunningNetwork.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/examples/MergingRoutersWithLongRunningNetwork.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -34,12 +34,19 @@
 
 import java.rmi.RemoteException;
 
+import de.uniba.wiai.lspi.puppetor.ClientApplication;
+import de.uniba.wiai.lspi.puppetor.ClientEventType;
 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.HiddenService;
+import de.uniba.wiai.lspi.puppetor.HiddenServiceEventType;
 import de.uniba.wiai.lspi.puppetor.Network;
 import de.uniba.wiai.lspi.puppetor.NetworkFactory;
 import de.uniba.wiai.lspi.puppetor.PuppeTorException;
+import de.uniba.wiai.lspi.puppetor.RouterNode;
+import de.uniba.wiai.lspi.puppetor.ServerApplication;
+import de.uniba.wiai.lspi.puppetor.ServerEventType;
 
 /**
  * Example for a private network of routers without directories that is merged
@@ -65,53 +72,51 @@
 	public static void main(String[] args) throws PuppeTorException,
 			RemoteException {
 
-		// create a network to initialize a test case (networkName)
-		Network network = NetworkFactory.createNetwork("routers", 9000);
+		// create a network to initialize the test case
+		Network network = NetworkFactory.createNetwork("example6", 7200);
 
-		// create six router nodes
-		network.createRouter("router10");
-		network.createRouter("router11");
-		network.createRouter("router12");
-		network.createRouter("router13");
-		network.createRouter("router14");
-		network.createRouter("router15");
+		// create three router nodes
+		RouterNode router4 = network.createRouter("router4");
+		RouterNode router5 = network.createRouter("router5");
 
 		// obtain reference to event manager to be able to respond to events
 		EventManager manager = network.getEventManager();
+
+		// register event listener
 		EventListener listener = new EventListener() {
 			public void handleEvent(Event event) {
-				System.out.println(event);
+				if (event.getType() instanceof ClientEventType
+						|| event.getType() instanceof ServerEventType) {
+					System.out.println("Handling event: " + event.getMessage());
+				}
 			}
 		};
 		manager.addEventListener(listener);
 
-		// configure nodes of this network to be part of a private network
-		network.configureAsPrivateNetwork();
-		System.out.println("Network written ...");
-
 		// obtain a reference on the remote long-running network
 		Network remoteNetwork = NetworkFactory.connectToNetwork("127.0.0.1",
-				"longRunning");
+				"example5");
 
 		// merge configuration with long-running network
 		network.configureAsInterconnectedPrivateNetwork(remoteNetwork);
-		System.out.println("Network configurations merged ...");
 
+		// add hidden service
+		HiddenService hidServ1 = router4.addHiddenService("hidServ");
+
 		// write configurations and hup all directory nodes in the other network
 		remoteNetwork.writeConfigurations();
 		remoteNetwork.hupAllDirectories();
 
-		// write configuration of proxy node
+		// write configurations of router nodes
 		network.writeConfigurations();
-		System.out.println("Config written ...");
 
 		// start proxy node and wait until it has opened a circuit with a
 		// timeout of 5 seconds
 		if (!network.startNodes(5000)) {
 			System.out.println("Failed to start the nodes!");
-			return;
+			System.exit(0);
 		}
-		System.out.println("Nodes started ...");
+		System.out.println("Successfully started nodes!");
 
 		// hup until proxy has built circuits (20 retries, 5 seconds timeout
 		// each)
@@ -119,29 +124,41 @@
 
 			// failed to build circuits
 			System.out.println("Failed to build circuits!");
-			return;
+			System.exit(0);
 		}
 		System.out.println("Successfully built circuits!");
 
-		// bind the network to rmiregistry
-		if (!network.bindAtRmiregistry()) {
-
-			// failed to bind at rmiregistry
-			System.out.println("Failed to bind at rmiregistry! "
-					+ "Is rmiregistry running?");
-			return;
+		// wait for 3 minutes that the proxy has published its first RSD
+		if (!manager.waitForAnyOccurence(router4.getNodeName(),
+				HiddenServiceEventType.BOB_DESC_PUBLISHED_RECEIVED,
+				3L * 60L * 1000L)) {
+			// failed to publish an RSD
+			System.out.println("Failed to publish an RSD!");
+			System.exit(0);
 		}
-		System.out.println("Bound at rmiregistry to name \""
-				+ network.getNetworkName() + "\"!");
+		System.out.println("Successfully published an RSD!");
 
-		// wait for an hour
-		try {
-			Thread.sleep(60 * 60 * 1000);
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
+		// create server application
+		ServerApplication server = network.createServer("server", hidServ1
+				.getServicePort());
 
-		// shutdown after hours
+		// start server
+		server.startListening();
+		System.out.println("Started server");
+
+		// create client application
+		ClientApplication client = network.createClient("client", hidServ1
+				.determineOnionAddress(), hidServ1.getVirtualPort(), router5
+				.getSocksPort());
+
+		// perform at most five request with a timeout of 45 seconds each
+		client.startRequests(5, 45000, true);
+
+		// wait for request to be performed
+		manager.waitForAnyOccurence(client.getClientApplicationName(),
+				ClientEventType.CLIENT_REQUESTS_PERFORMED);
+
+		// shut down nodes
 		network.shutdownNodes();
 
 		// Shut down the JVM

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/groovy/RmiPuppetzShell.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/groovy/RmiPuppetzShell.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/groovy/RmiPuppetzShell.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -342,6 +342,13 @@
 				Script script = null;
 				try {
 					String input = inputJTextField.getText();
+
+					// write command to console
+					consoleJTextArea.append("> " + input + "\n");
+					
+					// clear command field
+					inputJTextField.setText("");
+					
 					commandHistoryIndex = 0;
 					commandHistory.addFirst(input);
 					script = shell.parse(input);

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ClientApplicationImpl.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -40,6 +40,8 @@
 import java.net.Socket;
 import java.net.SocketTimeoutException;
 import java.net.Proxy.Type;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -51,7 +53,9 @@
  * 
  * @author kloesing
  */
-public class ClientApplicationImpl implements ClientApplication {
+@SuppressWarnings("serial")
+public class ClientApplicationImpl extends UnicastRemoteObject implements
+		ClientApplication {
 
 	/**
 	 * Internal thread class that is used to perform requests.
@@ -358,9 +362,12 @@
 	 * @throws IllegalArgumentException
 	 *             If at least one of the parameters is <code>null</code> or
 	 *             has an invalid value.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
 	ClientApplicationImpl(NetworkImpl network, String clientApplicationName,
-			String targetName, int targetPort, int socksPort) {
+			String targetName, int targetPort, int socksPort)
+			throws RemoteException {
 
 		// check if clientApplicationName can be used as logger name
 		if (clientApplicationName == null

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/HiddenServiceImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/HiddenServiceImpl.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/HiddenServiceImpl.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -4,6 +4,8 @@
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -15,7 +17,9 @@
  * 
  * @author kloesing
  */
-public class HiddenServiceImpl implements HiddenService {
+@SuppressWarnings("serial")
+public class HiddenServiceImpl extends UnicastRemoteObject implements
+		HiddenService {
 
 	/**
 	 * Logger for this node which is called "hidserv." plus the name of this
@@ -68,9 +72,11 @@
 	 * @throws IllegalArgumentException
 	 *             Thrown if an invalid value is given for either of the
 	 *             parameters.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
 	HiddenServiceImpl(ProxyNodeImpl node, String serviceName, int servicePort,
-			int virtualPort) {
+			int virtualPort) throws RemoteException {
 
 		// check if networkName can be used as logger name
 		if (serviceName == null || serviceName.length() == 0) {

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/NetworkImpl.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -351,7 +351,8 @@
 	}
 
 	public ClientApplication createClient(String clientApplicationName,
-			String targetAddress, int targetPort, int socksPort) {
+			String targetAddress, int targetPort, int socksPort)
+			throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "createClient",
@@ -557,7 +558,7 @@
 	}
 
 	public ServerApplication createServer(String serverApplicationName,
-			int serverPort) {
+			int serverPort) throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "createServer",
@@ -575,7 +576,8 @@
 		return server;
 	}
 
-	public ServerApplication createServer(String serverApplicationName) {
+	public ServerApplication createServer(String serverApplicationName)
+			throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "createServer",

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ProxyNodeImpl.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -161,7 +161,7 @@
 	 *             If at least one of the parameters is <code>null</code> or
 	 *             has an invalid value.
 	 * @throws RemoteException
-	 *             Thrown if an error occurs when accessed remotely.s
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
 	ProxyNodeImpl(NetworkImpl network, String nodeName, int controlPort,
 			int socksPort) throws RemoteException {
@@ -345,7 +345,7 @@
 	}
 
 	public synchronized HiddenService addHiddenService(String serviceName,
-			int servicePort, int virtualPort) {
+			int servicePort, int virtualPort) throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "addHiddenService",
@@ -369,7 +369,7 @@
 	}
 
 	public synchronized HiddenService addHiddenService(String serviceName,
-			int servicePort) {
+			int servicePort) throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "addHiddenService",
@@ -385,7 +385,8 @@
 		return result;
 	}
 
-	public synchronized HiddenService addHiddenService(String serviceName) {
+	public synchronized HiddenService addHiddenService(String serviceName)
+			throws RemoteException {
 
 		// log entering
 		this.logger.entering(this.getClass().getName(), "addHiddenService",

Modified: puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java
===================================================================
--- puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java	2007-10-05 00:48:04 UTC (rev 11766)
+++ puppetor/trunk/src/de/uniba/wiai/lspi/puppetor/impl/ServerApplicationImpl.java	2007-10-05 12:12:58 UTC (rev 11767)
@@ -37,6 +37,8 @@
 import java.io.PrintStream;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -48,7 +50,9 @@
  * 
  * @author kloesing
  */
-public class ServerApplicationImpl implements ServerApplication {
+@SuppressWarnings("serial")
+public class ServerApplicationImpl extends UnicastRemoteObject implements
+		ServerApplication {
 
 	/**
 	 * Internal thread class that is used to process an incoming request.
@@ -270,9 +274,11 @@
 	 * @throws IllegalArgumentException
 	 *             If at least one of the parameters is <code>null</code> or
 	 *             has an invalid value.
+	 * @throws RemoteException
+	 *             Thrown if an error occurs when accessed remotely.
 	 */
 	ServerApplicationImpl(NetworkImpl network, String serverApplicationName,
-			int serverPort) {
+			int serverPort) throws RemoteException {
 
 		// check if serverApplicationName can be used as logger name
 		if (serverApplicationName == null